Ejemplo n.º 1
0
        // [STAThread]
        public void Create(int numb, string[] src, string searchStr)
        {
            Deamon[] d = new Deamon[numb];
            MessageBox.Show("Create");
            int nRow       = 0;
            int addLastRow = 0;
            int indexStart = 0;

            nRow       = src.Length / numb;
            addLastRow = (src.Length) - (nRow * numb);
            string[] temp = new string[addLastRow + nRow];
            for (int i = 0; i < numb; i++)
            {
                if ((i + 1) == numb)
                {
                    nRow += addLastRow;
                    Array.Copy(src, indexStart, temp, 0, nRow);
                    // Console.WriteLine($"Length Temp:{temp.Length}");
                    //d[i] = new Deamon(temp, searchStr, i);
                    Deamon de = new Deamon(temp, searchStr, i);
                    d[i] = de;
                    ThreadPool.QueueUserWorkItem(de.Search, i);
                    //Thread thred = new Thread(d[i].Search);
                    //  thred.Start();
                    // Console.WriteLine($"Кількість рядків у демона{i} :{ nRow}");
                }
                else
                {
                    Array.Copy(src, indexStart, temp, 0, nRow);
                    Deamon de = new Deamon(temp, searchStr, i);
                    d[i] = de;
                    ThreadPool.QueueUserWorkItem(de.Search, i);
                    //d[i] = new Deamon(temp, searchStr, i);
                    //Console.WriteLine($"Кількість рядків у демона{i} :{ nRow}");
                    //  Console.WriteLine(temp.Length);
                    //  d[i].Show();
                    //Thread thred = new Thread(d[i].Search);
                    //thred.Start();
                }
                Array.Clear(temp, 0, temp.Length);
                indexStart += nRow;
            }
        }
Ejemplo n.º 2
0
        public void ENTER_Click(object sender, RoutedEventArgs e)
        {
            string text = EnterVal.Text;

            if (text != "")
            {
                switch (inFunc)
                {
                case ("No"):
                    switch (text)
                    {
                    case ("1"):

                        MessageBox.Show("Введіть назву файла в поле");
                        inFunc        = "First";
                        EnterVal.Text = "";
                        break;

                    case ("2"):
                        MessageBox.Show("Введіть кількість демонів, або -1 для автоматичного свторення");
                        inFunc        = "Second";
                        EnterVal.Text = "";
                        break;

                    case ("3"):

                        break;

                    case ("4"):

                        break;

                    case ("5"):
                        Deamon d1 = new Deamon(fileName, searchStr, numb);
                        //Thread t = new Thread();
                        // t.SetApartmentState(ApartmentState.STA);
                        //t.Start();
                        ThreadPool.QueueUserWorkItem(d1.Start);
                        inFunc    = "No";
                        Log.Text += "\nНазва файлу:" + fileName;
                        Log.Text += "\nКількість демонів:" + numb;
                        Log.Text += "\n Пошук:" + searchStr;
                        break;
                    }
                    break;

                case ("First"):
                    fileName      = EnterVal.Text;
                    Log.Text     += fileName;
                    EnterVal.Text = "";
                    inFunc        = "No";
                    break;

                case ("Second"):
                    if (Int32.TryParse(EnterVal.Text, out int a))
                    {
                        numb          = a;
                        inFunc        = "Str";
                        Log.Text     += "\n" + numb;
                        EnterVal.Text = "";
                        MessageBox.Show("Введіть рядок для пошуку");
                    }
                    else
                    {
                        MessageBox.Show("Введіть кількість демонів");
                    }
                    break;

                case ("Str"):
                    searchStr     = EnterVal.Text;
                    EnterVal.Text = "";
                    Log.Text     += "\n Пошук:" + searchStr;
                    Deamon d = new Deamon(fileName, searchStr, numb);

                    ThreadPool.QueueUserWorkItem(d.Start);
                    inFunc = "No";
                    break;
                }
            }
            EnterVal.Text = "";
        }