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

时间:2017-05-24 10:50:23

标签: 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();但是它从未到达它。我试着去尝试捕捉&#34;但也没有什么事情发生。当我将这两种方法合并为一种时,它可以完美地运行,但它并不那么漂亮。我只是想知道那里发生了什么。

1 个答案:

答案 0 :(得分:1)

由于第一种方法是 private void btnProcessFIle_Click(object sender, EventArgs e) { Task<int> task = new Task<int>(countCharacters); task.Start(); var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); task.ContinueWith(count =>{ lblCount.BeginInvoke(()=>{ lblCount.Text = "No. of characters in file=" +Environment.NewLine+ count.ToString(); }); }); } ,您应该使用async代替await

Result

如果您不是编程前端,请在通话中添加var cookieArray = await GetCookies(); why?),如下所示:

ConfigureAwait(false)