分别定义和链接任务
本文关键字:链接 任务 定义 | 更新日期: 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>
并返回Task
(Task<Task<T>>
也是如此。这允许您返回Task
作为现有Task
的延续,并返回您返回的原始Task
类型。