当使用Task.WaitAll
方法同步等待任务数组完成时,可以指定 timeout 以毫秒为单位。达到超时后,WaitAll
停止等待并返回false
。
我想知道是否可以获取超时后未完成的任务的子列表。
答案 0 :(得分:0)
根据Jeroen Mostert在评论中的建议,当Task.WaitAll
在超时后返回false
时,我们可以筛选完成的任务。
示例:
var tasks = new task[]
{
Task.Run(someMethod),
Task.Run(someMethod1),
Task.Run(someMethod2),
Task.Run(someMethod3),
};
bool allTasksAreCompleted = Task.WaitAll(tasks, 10000);
if (!allTasksAreCompleted)
{
var incompleteTasks = tasks.Where(t => !t.IsCompleted);
}
如果Task.WaitAll
超时,我们将在incompleteTasks
变量中获得未完成的任务。