分别定义和链接任务

时间:2012-01-28 02:18:27

标签: c# parallel-processing task-parallel-library

我希望我能够以某种方式定义然后以一种很好的方式来获得类似的代码:

Task ShowLoadNotificationTask = new Task( () => ShowLoadNotification(frm) );
Task LoadAllWorkOrdersTask = new Task(() => LoadAllWorkOrders());
Task CloseLoadNotificationTask = new Task(() => CloseLoadNotificationTask(frm));

ShowLoadNotificationTask.ContinueWith( LoadAllWorkOrdersTask );
LoadAllWorkOrdersTask..ContinueWith(CloseLoadNotificationTask);

ShowLoadNotificationTask.Start();

当然上面的代码不正确,但是如何获得与上面类似的工作?

1 个答案:

答案 0 :(得分:1)

听起来您想要独立构建Task个实例,然后将它们组合成一个Task。如果是这样,那么您要查找的是System.Core

中定义的Unwrap扩展方法
Task parent = ShowLoadNotificationTask
  .ContinueWith(_ => LoadAllWorkOrdersTask)
  .Unwrap()
  .ContinueWith(_ => CloseLoadNotificationTask)
  .Unwrap();

Unwrap方法需要Task<Task>并返回Task(同样适用于Task<Task<T>>。这样您就可以返回Task作为继续使用现有Task并返回您返回的原始Task类型。