Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分别定义和链接任务_C#_Parallel Processing_Task Parallel Library - Fatal编程技术网

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
方法接受一个
任务
,并返回一个
任务
(这同样适用于
任务
。这允许您返回一个
任务
,作为现有
任务
的延续,并返回原始的
任务
类型