Task.WaitAll超时如何获取未完成的任务?
How to get unfinished tasks when Task.WaitAll times out?
当使用 Task.WaitAll
方法同步等待 任务数组 完成时,可以指定 timeout以毫秒为单位。当达到超时时 WaitAll
停止等待并且 returns false
.
我想知道是否有办法获取超时后未完成的任务的子列表。
正如Jeroen Mostert在评论中所建议的那样,当Task.WaitAll
returns 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
变量中获取未完成的任务。
当使用 Task.WaitAll
方法同步等待 任务数组 完成时,可以指定 timeout以毫秒为单位。当达到超时时 WaitAll
停止等待并且 returns false
.
我想知道是否有办法获取超时后未完成的任务的子列表。
正如Jeroen Mostert在评论中所建议的那样,当Task.WaitAll
returns 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
变量中获取未完成的任务。