Бесконечно ожидающий 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.

0 ответов

Другие вопросы по тегам