HttpClient GetAsync always says 'WaitingForActivation

本文关键字:WaitingForActivation HttpClient always says GetAsync | 更新日期: 2023-09-27 18:30:18

我是HttpClient的新手。我下面的代码总是在状态中显示"等待激活"。请帮忙

private static async Task<HttpResponseMessage> MakeCall()
{
    var httpclient = new HttpClient();
    var response = await httpclient.GetAsync("http://localhost:60565/Subscribers");
    return response;
}

HttpClient GetAsync always says 'WaitingForActivation

或者

,如果您的环境是同步的,请添加.Result,如下所示:

GetAsync("http://localhost:60565/Subscribers").Result;

很正常。只需await返回的任务即可(异步)等待它完成。

您可能会发现我的介绍async有帮助。

正如Cleary在他的帖子中所写,为了创建一个异步调用,你的任务也应该等待。这意味着,您的问题(MakeCall())中的方法可能是异步的,但对该方法的调用可能是同步的。

异步示例类:

using System.Threading.Tasks;
public class SampleClass
{
  public async Task<string> MakeCall()
  {
    # I am using the asynchronous call from the HttpClient library
    var response = await client.PostAsJsonAsync(url, creds)
    ...
  }
}

尝试等待对该方法的调用。

var makeCall = await SampleClass.MakeCall();

我要避免的是使用.Result.正如JDandChips已经暗示的那样,它使您的呼叫再次同步。但是,在这种情况下,没有必要首先尝试使异步。

相关文章:
  • 没有找到相关文章