所以我有这样的流程:
我写了这段代码:
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
虽然这段代码到目前为止有用,但我觉得这不是一个好习惯。 你能给我一些如何以更好的方式解决这个问题的技巧吗?谢谢!
答案 0 :(得分:2)
您可以改为使用Task.WaitAll()
:
Task.WaitAll(workerTasks.ToArray() );
或者对于异步方法:
await Task.WhenAll(workerTasks.ToArray());
或者将任务返回给调用者:
return Task.WhenAll(workerTasks.ToArray());