分别定义和链接任务

本文关键字:链接 任务 定义 | 更新日期: 2023-09-27 18:21:55

我希望我能以某种方式定义并链接它们,以获得类似于以下的代码:

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();

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

分别定义和链接任务

听起来您想要独立构建Task实例,然后将它们组合成一个Task。如果是这样的话,那么您要寻找的是System.Core 中定义的Unwrap扩展方法

Task parent = ShowLoadNotificationTask
  .ContinueWith(_ => LoadAllWorkOrdersTask)
  .Unwrap()
  .ContinueWith(_ => CloseLoadNotificationTask)
  .Unwrap();

Unwrap方法获取Task<Task>并返回TaskTask<Task<T>>也是如此。这允许您返回Task作为现有Task的延续,并返回您返回的原始Task类型。