.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));
}