我有texture
。当第一个Task<bool>[] myTasks
返回Task
时,我如何得到通知(等待)?
答案 0 :(得分: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.