c# - 任务并行性 - 任务 OnCompleted 在所有ContinueWith之后触发

标签 c# parallel-processing task

我在处理任务时遇到问题。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/

相关文章:

.net - 为什么我的现金抽屉没有出现在 pos for .net 的设备列表中?

python - 为什么在使用 Python 多处理池时会有空闲的工作线程?

multithreading - 我应该在库中使用.NET 4.0任务吗?

Java Cron4J 持久任务

c# - 在 t4 模板中检测类继承

c# - 无法插入到远程数据库 C#

c# - 为值和引用类型定义通用接口(interface)类型约束

multithreading - 如何编写基于线程的并行列表迭代?

c# - 4 片 bytearray 使用多线程进行比较

c# - 如果至少有一个任务结束,如何关闭所有任务