两个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并行扩展不起作用,因为它们确保任务完成但不是延续代码。