// [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; } }
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 = ""; }