Jon*_*eet 12
基本上,Task.WhenAny如果结果不是您想要的结果,您需要保留一组不完整的任务,并重复使用,检查结果并继续(删除该任务).例如:
ISet<Task<bool>> activeTasks = new HashSet<Task<bool>>(myTasks);
while (activeTasks.Count > 0)
{
Task<bool> completed = await Task.WhenAny(activeTasks);
if (completed.Status == TaskStatus.RanToCompletion &&
completed.Result)
{
// Or take whatever action you want
return;
}
// Task was faulted, cancelled, or had a result of false.
// Go round again.
activeTasks.Remove(completed);
}
// No successful tasks - do whatever you need to here.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |