编辑解决方案:似乎解决方案是使用下面的代码,我指定了TaskContinuationOption.ExecuteSynchronously
public ActionBlock<DomainBaseFile[]> GetActionBlock()
{
var returnActionBlock = new ActionBlock<DomainBaseFile[]>(
n => Work(n)
);
returnActionBlock.Completion.ContinueWith((s, o) => FinalizeFiles(), new object(), TaskContinuationOptions.ExecuteSynchronously);
return returnActionBlock;
}
我有两个任务,即链接的FirstTask和SecondTask。这两项任务都有完成后必须做的事情,即
firstTask.Complete.ContinueWith(t => ...
我目前遇到的问题是SecondTask Complete.ContinueWith似乎在FirstTask.Complete.ContinueWith之前运行,并且假设第一个任务完成而构建代码。
我认为这是因为ContinueWith任务在发送完成信号后立即运行,并且不像完全传播那样进行排序。
反正我是否强迫SecondTask在FirstTask.Complete.ContinueWith完成之前不调用它的Complete方法?
目前,我有
Task.WhenAll(firstBlock.Completion)
.ContinueWith(_ =>
secondBlock.Complete()
);
但是,这个Task.WhenAll将等待Completion而不是Completion.ContinueWith函数完成。
非常感谢任何帮助。