TPL任务父母取消

时间:2013-11-27 16:04:58

标签: c# parallel-processing task-parallel-library

两个TPL任务,MethodA和MethodB作为AttachedToParent任务运行。只有当args包含一些数据时,才应运行MethodA args.Criteria.Any() - > MethodB任务应该始终运行,因为它处理在args中找到的其他类型,例如args.Collection等。

如果args没有要处理的数据但仍然调用MethodB,我想阻止MethodA运行。下面的代码有效,但效率低下 - >关于如何改进它的任何想法?

Task.Factory.StartNew(() => MethodA(args, token), token, TaskCreationOptions.AttachedToParent, TaskScheduler.Default)
    .ContinueWith
        (
         task => 
               { 
                     Task.Factory.StartNew(() => MethodB(args, token)); 
                }
        );

只有当args包含一些数据时,方法A才会运行(未显示)。 MethodB总是运行。

PS - ContinuationTasks或OnComplete并行扩展不起作用,因为它们确保任务完成但不是延续代码。

0 个答案:

没有答案