【发布时间】:2012-07-24 01:53:13
【问题描述】:
我正在使用任务并行库,并且正在使用任务工厂来创建和启动新任务列表。启动任务后,我调用 Task.WaitAll(...) 等待所有任务返回。代码如下所示。
Tasks<MyClass>[] tasks = .../Create List of Tasks and Start using TaskFactory.StartNew(..) etc.
Task.WaitAll(tasks); //Wait until all tasks complete before continuing.
当我的任务返回并完成时,如果它们满足某些条件,结果将被汇总到一个列表中以供稍后处理。在每个任务运行时,可能会引发某些异常,这将“取消”任务结果被添加到聚合列表的资格。我希望能够在执行任务中抛出异常,并且该任务不再运行。
我知道有一些功能可以处理某些事件,例如取消令牌和取消源,但它们似乎不允许我做我想做的事。尽管它不存在,但我希望能够订阅诸如 task.OnException 或 task.OnError 等任务上的事件处理程序之类的功能。使用 TPL 完成此功能有哪些选择?
【问题讨论】:
标签: c# .net multithreading task-parallel-library