Я использую TPL DataFlow и ActionBlock для создания параллелизма. Причина использования TPL DataFlow заключается в том, что он поддерживает асинхронность, за исключением того, что я не могу заставить его работать.Ожидает ActionBlock <T> - 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?
Отличный Джон, это сработало. Я просто смотрел видео на Channel 9, в котором также упоминается свойство Completion. Для всех, кого это интересует, это здесь: http://channel9.msdn.com/posts/TPL-Dataflow-Tour ... Я большой поклонник, я был рад, что вы ответили на мой вопрос :) –