.NET 4.x Ожидание выполнения Thread 64+ - C#

Узнай цену своей работы

Формулировка задачи:

Код рабочий, все ок. Но больше 64 потока WaitHandle не поддерживает, как ожидать выполнение 100, 200 или даже большего числа потоков?
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. WaitHandle[] handles = new WaitHandle[100];
  4. for (int i = 0; i < 100; i++)
  5. {
  6. handles[i] = new ManualResetEvent(false);
  7. new Thread(One).Start(handles[i]);
  8. }
  9. WaitHandle.WaitAll(handles);
  10. MessageBox.Show($"Ура, выполнили!!!");
  11. }
  12. private void One(object handle)
  13. {
  14. Thread.Sleep(new Random().Next(1000,5000));
  15. // сообщаем что поток завершился
  16. ((ManualResetEvent)handle).Set();
  17. }

Решение задачи: «.NET 4.x Ожидание выполнения Thread 64+»

textual
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3.     var threads = new Thread[100];
  4.     for (int i = 0; i < 100; i++)
  5.     {
  6.         threads[i] = new Thread(One);
  7.         threads[i].Start();
  8.     }
  9.     for (int i = 0; i < 100; i++)
  10.     {
  11.         threads[i].Join();
  12.     }
  13.     MessageBox.Show("Ура, выполнили!!!");
  14. }
  15. private void One()
  16. {
  17.     Thread.Sleep(new Random().Next(1000,5000));
  18. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы