【发布时间】:2018-03-15 20:21:35
【问题描述】:
我正在尝试运行一组任务,然后在这些任务完成后,运行一个单独的任务组。本质上,第一个任务集合负责写入一些数据库表,最后一个任务集合将这些表中的数据整理成一个报告表。
我正在使用的代码示例如下:
var dbWriteTasks = clients.Select(c => DoSomeWorkAsync(c)).ToArray();
var dbCollateTasks = clients.Select(c => DoSomeOtherWorkAsync(c));
Task.Factory.ContinueWhenAll(dbWriteTasks, t => dbCollateTasks.ToArray());
这是成功运行第一组任务,但没有运行任何第二组任务,所以我显然做错了什么。
我也试过了,没用:
var dbWriteTasks = clients.Select(c => DoSomeWorkAsync(c)).ToArray();
var dbCollateTasks = clients.Select(c => DoSomeOtherWorkAsync(c)).ToArray();
Task.Factory.ContinueWhenAll(dbWriteTasks, t => dbCollateTasks);
这会运行两组任务,但第二组任务在第一组任务完成插入数据之前开始运行并处理数据...
我还应该提到,我尝试过使用Task.WaitAll 同步运行这两组任务,但这也没有奏效。我正在尝试在 Azure 函数中执行所有这些操作,而 Task.WaitAll 只会导致它停止。
我对 TPL 比较陌生,因此我们将不胜感激任何建议!
【问题讨论】:
标签: c# multithreading azure task-parallel-library azure-functions