簡體   English   中英

等待所有工人完成

[英]Wait until all workers are done

所以我有這樣的流程:

  1. 創建x個工作任務
  2. 做些事
  3. 等待所有工人任務完成
  4. 繼續

我寫了這段代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM