繁体   English   中英

foreach内部未等待异步调用

[英]async calls not awaited inside foreach [closed]

在我的C#代码中,每次都不会等待来自内部的for异步调用。

private async Task GetCardInfo()
{
  try
  {
     var result = await DoTask1();
     var info = await DoTask2();
     foreach (var inf in info)
     {
        await DoTask3();
     }
   }
   catch (Exception ex){ }
}

DoTask1(); DoTask2(); 总是在等待,但是DoTask3(); 有时等待,有时不是。 我认为问题出在DoTask3(); 但是如果我把DoTask1(); 在foreach循环中,我遇到了类似的问题。 难道我做错了什么?

仅当从foreach循环内部调用它时,才会发生此问题;如果从foreach循环外部调用,则会按预期等待这些函数。

有人可以建议吗?

我的猜测是:

  1. info集合为空(0长度),因此不会执行foreach主体。
  2. 有人抛出异常(也许在DoTask2或信息枚举器中),该异常跳到您的陷阱中,因此跳过了foreach正文。

要验证这一点,请在调试器下运行它或添加一些Console.WriteLines()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM