我遇到了异步方法的问题。
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;但也没有什么事情发生。当我将这两种方法合并为一种时,它可以完美地运行,但它并不那么漂亮。我只是想知道那里发生了什么。
答案 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)