我正在使用TPL DataFlow和ActionBlock来创建并行性。使用TPL DataFlow的理由是它支持异步,但我无法使其正常工作。
var ab = new ActionBlock<Group>(async group =>
{
try {
labelStatus.Text = "Getting admins from " + group.Gid;
await GetAdminsFromGroup(group.Gid);
}catch (ArgumentOutOfRangeException ex) {
// Log exception
}
}, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 10 });
db.Groups.ToList().ForEach(i => ab.Post(i));
ab.Complete();
MessageBox.Show("Complete");
尽管ActionBlocks仍在运行,但消息框几乎立即显示。 我该如何await
直到ActionBlock完成?