コード例 #1
0
ファイル: Form1.cs プロジェクト: pendragon707/BKIT
 public void ShearchCompletedNow(List <ShearchItemClass> ShearchItemList, MyEventThreadFind c)
 {
     CountItemsUp = CountItemsUp + c.CountUp;
     if (c.EndWork)
     {
         ResultTimeStrim = ResultTimeStrim + c.NameThread + " время работы потока - " + c.TimeWork + " мс \r\n";
     }
 }
コード例 #2
0
ファイル: Form1.cs プロジェクト: pendragon707/BKIT
 public void OneShearchAddOk(MyEventThreadFind c)
 {
     if (c is MyEventThreadFind)
     {
         ItemListAdd.Add(c);
         CountItemsUp = CountItemsUp + c.CountUp;
     }
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: pendragon707/BKIT
        private void ShearchStart()
        {
            int EndItem = First + Lenght;
            //int CountUp = 0;
            MyEventThreadFind e = new MyEventThreadFind();

            e.NameThread = NameThread;
            e.Lenght     = Lenght;
            e.First      = First;
            e.EndWork    = false;
            EndWork      = false;
            e.CountUp    = 0;
            e.TimeWork   = 0;

            Stopwatch sw = new Stopwatch();

            sw.Start();

            if (EndItem > ArrayShearch.Count)
            {
                EndItem = ArrayShearch.Count;
            }
            for (int i = First; i < EndItem; i++)
            {
                int    k = i;
                string s = ArrayShearch[k];

                ShearchItemClass ShearchItem = ShearhFunc(s, ShearchString);
                e.CountUp++;
                if (ShearchItem.Distance <= Distance)
                {
                    ShearchItem.IndexItem = k;
                    ResultList.Add(ShearchItem);
                    e.TimeWork    = sw.ElapsedMilliseconds;
                    e.ShearchItem = ShearchItem;
                    e.IndexNow    = k;
                    MyEventThreadFind cc = new MyEventThreadFind();


                    cc.EndWork     = e.EndWork;
                    cc.First       = e.First;
                    cc.IndexNow    = e.IndexNow;
                    cc.Lenght      = e.Lenght;
                    cc.MyThread    = e.MyThread;
                    cc.NameThread  = e.NameThread;
                    cc.ShearchItem = e.ShearchItem;
                    cc.TimeWork    = e.TimeWork;
                    cc.CountUp     = e.CountUp;

                    OneShearchAddNow?.Invoke(cc);
                    e.CountUp = 0;
                    Thread.Sleep(20);
                }
            }
            sw.Stop();
            e.TimeWork = sw.ElapsedMilliseconds;
            e.EndWork  = true;
            EndWork    = true;
            ShearchCompletedNow?.Invoke(ResultList, e);
            Thread.Sleep(100);
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: pendragon707/BKIT
        private void timer2_Tick(object sender, EventArgs e)
        {
            if ((int)timer2.Tag == ItemListAdd.Count)
            {
                int k = 0;
                for (int i = 0; i < ListThreadFind.Length; i++)
                {
                    if (((ListThreadFind[i] is MyThreadFind) && (ListThreadFind[i].EndWork)) || (ListThreadFind[i] == null))
                    {
                        k++;
                    }
                }
                LogTextBox.AppendText(" работают-" + (ListThreadFind.Length - k) + " потоков\r\n");
                if (k == ListThreadFind.Length)
                {
                    stopwatchwork.Stop();
                    timer1.Start(); // запускаем таймер для сокрытия прогрессбара
                    timer2.Stop();  // останавливаем таймер переноса данных в лист бокс
                    TimeWorkStr.Text = "Время поиска " + stopwatchwork.ElapsedMilliseconds + " ms";
                    for (int i = 0; i < ItemListAdd.Count; i++)
                    {
                        if (ItemListAdd[i] is MyEventThreadFind)
                        {
                            LogTextBox.AppendText("№" + i + "   " + ItemListAdd[i].ShearchItem + "  Stream - " + ItemListAdd[i].NameThread + "\r\n");
                        }
                    }
                    LogTextBox.AppendText(ResultTimeStrim);
                    File.WriteAllText(LogFileName.Text, LogTextBox.Text);
                    ItemListAdd.Clear();
                }
            }
            if (!((ItemListAdd.Count == 0) || (ItemListAdd.Count == (int)timer2.Tag)))
            {
                MyEventThreadFind c = ItemListAdd[(int)timer2.Tag];
                if (c is MyEventThreadFind)
                {
                    int len = TextRenderer.MeasureText(c.ShearchItem.ShearchString, ListData.Font).Width;
                    if (LenCol < len)
                    {
                        LenCol = len + 10;
                    }

                    if ((int)timer2.Tag == 0)
                    {
                        ListData.Items.Add(c.ShearchItem);
                    }
                    else
                    {
                        bool insertOk = false;
                        for (int i = 0; i < ListData.Items.Count; i++)
                        {
                            if ((ListData.Items[i] is ShearchItemClass) && (ListData.Items[i] as ShearchItemClass).IndexItem > c.IndexNow)
                            {
                                ListData.Items.Insert(i, c.ShearchItem);
                                // if (c.NameThread == " Stream - 10")
                                LogTextBox.AppendText(c.NameThread + " insert -  " + c.ShearchItem + "\r\n");
                                insertOk = true;
                                break;
                            }
                        }
                        if (!insertOk)
                        {
                            ListData.Items.Add(c.ShearchItem);
                            //if (c.NameThread == " Stream - 10")
                            LogTextBox.AppendText(c.NameThread + " Add -  " + c.ShearchItem + "\r\n");
                        }
                    }
                }

                timer2.Tag = (int)timer2.Tag + 1;
                if (CountItemsUp == 0)
                {
                    progressBar1.Value = progressBar1.Maximum;
                }
                else
                {
                    progressBar1.Value = progressBar1.Value + CountItemsUp;
                }
                CountItemsUp = 0;
            }
        }