我在处理任务时遇到问题。GetAwaiter().OnCompleted(new Action)
我有一个包含多个ContinueWith的主任务,但是当我返回主任务并在OnCompleted上添加委托(delegate)时,它会在处理主任务后触发,而不是在所有ContinueWith之后触发
我的问题是,有没有办法知道所有的 continue 何时完成?
这是我当前的代码。
runningTask.Start();
runningTask.GetAwaiter().OnCompleted(() =>
{
KeyValuePair<int, Func<bool>> validator = validationList.FirstOrDefault(x => x.Key == runningTask.Id);
bool shouldContinue = validator.Value();
if (shouldContinue)
{
validationList.Remove(validator.Key);
PerformExecutionByQueue();
}
});
runningTask是这样创建的
Task runningTask = new Task(delegate method);
Task secondTask = runningTask.ContinueWith(delegate method);
等等。 。 .
最佳答案
将对 ContinueWith
的所有调用的结果存储在某种集合中,然后在全部完成后使用 Task.WhenAll
执行某些代码。
关于c# - 任务并行性 - 任务 OnCompleted 在所有ContinueWith之后触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21856348/