当持续时,剩下的任务将会发生什么



当调用taskfactory.continuewhenany(task [],action(task(task)))时,其余任务会发生什么?在特定任务首先完成后,其余任务是否被取消或将在后台运行?如果它们在后台运行,我们如何取消它们?

其余任务按正常运行。当第一个Task完成时,这种延续会触发。

取消这样的剩余任务:

var tknSource = new CancellationTokenSource();
List<Task> tasks = new List<Task>();
for(int i = 0; i < 50; i++)
{
    tasks.Add(Task.Run(DoWork(tknSource.Token))); //pass the token to the tasks
}
TaskFactory.ContinueWhenAny(tasks.ToArray(), p => tknSource.Cancel()); //requests a cenllation on tasks that are still running

请注意,您只能请求取消。DoWork必须在变化状态时观察并采取行动。

查看有关取消任务的MSDN文章以获取更多详细信息

相关内容

  • 没有找到相关文章

最新更新