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;
}
或者
,如果您的环境是同步的,请添加.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已经暗示的那样,它使您的呼叫再次同步。但是,在这种情况下,没有必要首先尝试使异步。