我希望我能够以某种方式定义然后以一种很好的方式来获得类似的代码:
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();
当然上面的代码不正确,但是如何获得与上面类似的工作?
答案 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
类型。