Бесконечно ожидающий ActionBlock<T>
Я использую TPL DataFlow и ActionBlock для создания параллелизма. Не уверен, что я делаю неправильно, это, кажется, бесконечно ждет
string ret = string.Empty;
var actionBlock = new ActionBlock<string>(async method =>
{
ret = await asyncall(param);//method not shown for brevity
}, //Stepped through till here
new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = Environment.ProcessorCount
});
actionBlock.Post("123");
actionBlock.Complete();
await Task.WhenAll(actionBlock.Completion);
return ret;
При переходе по коду я могу проследить его до того места, где я разместил свой комментарий в приведенном выше коде. После завершения действия actionblock приложение продолжает бесконечно ждать, когда IsCompleted имеет значение false.