C# 分别定义和链接任务
我希望我能以某种方式定义它们,然后以一种很好的方式将它们链接起来,以获得类似于以下内容的代码:C# 分别定义和链接任务,c#,parallel-processing,task-parallel-library,C#,Parallel Processing,Task Parallel Library,我希望我能以某种方式定义它们,然后以一种很好的方式将它们链接起来,以获得类似于以下内容的代码: Task ShowLoadNotificationTask = new Task( () => ShowLoadNotification(frm) ); Task LoadAllWorkOrdersTask = new Task(() => LoadAllWorkOrders()); Task CloseLoadNotificationTask = new Task(() => Cl
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();
当然,上面的代码是不正确的,但是如何让类似于上面的东西工作呢?听起来你想独立构造
任务
实例,然后将它们组合成一个任务
。如果是这样的话,那么您需要的是System.Core中定义的Unwrap
扩展方法
Task parent = ShowLoadNotificationTask
.ContinueWith(_ => LoadAllWorkOrdersTask)
.Unwrap()
.ContinueWith(_ => CloseLoadNotificationTask)
.Unwrap();
Unwrap
方法接受一个Task
并返回一个Task
(这同样适用于任务
。这允许您返回一个任务
,作为现有任务
的延续,并返回您返回的原始任务
类型。听起来您想独立构造任务
实例,然后将它们组合成一个任务
。如果是这样,那么您要查找的是System.Core中定义的Unwrap
扩展方法
Task parent = ShowLoadNotificationTask
.ContinueWith(_ => LoadAllWorkOrdersTask)
.Unwrap()
.ContinueWith(_ => CloseLoadNotificationTask)
.Unwrap();
Unwrap
方法接受一个任务
,并返回一个任务
(这同样适用于任务
。这允许您返回一个任务
,作为现有任务
的延续,并返回原始的任务
类型