Dav*_*001 0 .net c# task-parallel-library
我有三个任务A,B,C.
B必须在C之前运行,但A可以与它们并行运行.这是最近改变的逻辑,我们目前的逻辑工作正常,我只是想知道我们目前有什么更好的解决方案:
public void RunTasks(...) {
Action<IRunnableTask> runner = task =>
{
if (task.ShouldRun(request))
{
task.Run(request, response);
}
};
// run parallel tasks
Parallel.ForEach(parallelTasks, runner);
// run serial tasks
Array.ForEach(serialTasks, runner);
}
Run Code Online (Sandbox Code Playgroud)
这里,A和B是并行任务,C在串行任务列表中.问题在于,代码将在C可以启动之前等待A完成,这是不必要的.
那么,有一个很好的清洁解决方案,还是我需要开始回调和什么?
您可以使用TPL中的任务.
您可以同时运行任务B和A,然后将任务C作为任务B的延续运行
例如
Task.Factory.StartNew(()=>TaskA());
Task.Factory.StartNew(()=>TaskB()).ContinueWith(t=>TaskC(t));
Run Code Online (Sandbox Code Playgroud)
在TaskB的继续中,您可以传递Task以获取TaskB传递给TaskC方法的任何结果.
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |