У меня есть массив потоков, и я хочу присоединить их всех с тайм-аутом (т. Е. Посмотреть, все ли они закончились в течение определенного тайм-аута). Я ищу что-то эквивалентное WaitForMultipleObjects или способ передачи дескрипторов потока в WaitHandle.WaitAll, но я не могу найти ничего в BCL, который делает то, что я хочу.
Я, конечно, могу перебрать все потоки (см. Ниже), но это означает, что для полной функции может потребоваться время ожидания * threads.Count для возврата.
private Thread[] threads;
public bool HaveAllThreadsFinished(Timespan timeout)
{
foreach (var thread in threads)
{
if (!thread.Join(timeout))
{
return false;
}
}
return true;
}