类具有异步方法MonitorAsync()
,该方法将启动长时间运行的并行操作。我有这些monitors
的集合;这些都是按如下步骤开始的:
internal async Task RunAsync()
{
var tasks = monitors.Select((p) => p.Value.MonitorAsync());
await Task.WhenAll(tasks);
}
如果monitor
掉落,我需要知道(基本上我会再次运行它)。我研究了ContinueWith
等等,但是当并行运行一堆异步任务时,如何确保可以确定何时结束?
如果您想知道一个结局何时结束(并且不影响其他结局),可以使用ContinueWith()。
或者,循环中的WaitAny呢?
while(anyTaskUnfinished){
await Task.WaitAny(tasks);
}
//Stuff you do after WhenAll() comes here
我不确定您是否必须删除已经完成的任务。或者,如果它等待任何新的完成。