我对异步方法有一些问题。
public async void MakePost()
{
var cookieArray = GetCookies().Result;
(...)
}
async public Task<string[]> GetCookies()
{
(...)
var response = await httpClient.SendAsync(request);
string cookieTempSession = response.Headers.ToString();
(...)
return cookieArray;
}
在 var response = await httpClient.SendAsync(request);
之后没有任何反应 我在下一行 string cookieTempSession = response.Headers.ToString();
中放置了断点但是它永远达不到。我试图“尝试捕捉”但也没有任何反应。当我将这两种方法合并为一种时,它工作得很好,但不是很漂亮。我只是想知道那里发生了什么。
最佳答案
因为第一个方法是async
,你应该使用await
而不是Result
:
var cookieArray = await GetCookies();
如果您不是在编程前端,请将 ConfigureAwait(false)
( why? ) 添加到调用中,如下所示:
var cookieArray = await GetCookies().ConfigureAwait(false);
...
var response = await httpClient.SendAsync(request).ConfigureAwait(false);
关于c# - 异步方法调用异步方法并等待另一个方法(http 客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44156208/