[英]Wait until all workers are done
所以我有這樣的流程:
我寫了這段代碼:
List<Task> workerTasks = new List<Task>();
foreach (Worker worker in workers)
{
Task task = Task.Factory.StartNew(() =>
{
worker.Start();
worker.Dispose();
});
workerTasks.Add(task);
}
// Do some work here
// Wait for unfinished workers
while (workerTasks.Where(t => !t.IsCompleted).Count() > 0) { }
// Proceed
到目前為止,雖然這段代碼有效,但我認為這不是一個好習慣。 您能否給我一些技巧,以便更好地解決此問題? 謝謝!
您可以改用Task.WaitAll()
:
Task.WaitAll(workerTasks.ToArray() );
或對於異步方法:
await Task.WhenAll(workerTasks.ToArray());
或將任務返回給調用者:
return Task.WhenAll(workerTasks.ToArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.