运行 使用 AsyncContext 进入死锁代码

Running into deadlocks code using AsyncContext

这是我的代码,我在我的库中使用 AsyncEx 来尝试绕过潜在的死锁,但我还是在那里:

return AsyncContext.Run(async () =>
{
   var get = await httpClient.GetAsync(url);
   if (get.IsSuccessStatusCode && (get.StatusCode == HttpStatusCode.OK))
   {
      var content = await get.Content.ReadAsStringAsync();
      return content;
   }

   return "";
});

我 运行 这是一个命令行应用程序,连续使用多个不同的 url 值调用它,但在一个大 for 循环中同步调用它。如果有足够多的电话,它最终会停止前进。我做错了什么吗?

我认为发生的情况是调用 GetAsync 后继续无法切换回同一线程,因为另一个线程正在等待继续开始。以下代码是否有效?

return AsyncContext.Run(async () =>
{
   var get = await httpClient.GetAsync(url).ConfigureAwait(false);
   if (get.IsSuccessStatusCode && (get.StatusCode == HttpStatusCode.OK))
   {
      var content = await get.Content.ReadAsStringAsync().ConfigureAwait(false);
      return content;
   }

   return "";
});