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

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

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

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

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

textual
Листинг программы
private void button1_Click(object sender, EventArgs e)
{
    var threads = new Thread[100];
    for (int i = 0; i < 100; i++)
    {
        threads[i] = new Thread(One);
        threads[i].Start();
    }
    for (int i = 0; i < 100; i++)
    {
        threads[i].Join();
    }
    MessageBox.Show("Ура, выполнили!!!");
}
private void One()
{
    Thread.Sleep(new Random().Next(1000,5000));
}

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы