c# - 异步方法调用异步方法并等待另一个方法(http 客户端)

标签 c# visual-studio asynchronous async-await

我对异步方法有一些问题。

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/

相关文章:

c# - parallel linq : AsParallel(). forAll() 使某些对象为空

c# - MEF 阻止类被手动实例化

visual-studio - Sublime Text 2 - 当前编辑的文件在外部发生变化时如何引起 LiveReload 刷新

android - 如何取消协程中的阻塞代码

c++ - std::async过多参数

c# - C# 的简单正则表达式帮助

c# - Azure 中的图像格式更改

android - MSBuild 在 xml 文件中搜索并替换

visual-studio - 如何停止 visual studio 检查 web.config?

scala - 正确使用 scalaz Future 进行异步执行