我开始使用TPL,并且在调用await内部标记为async的调用方法的重要性方面有一个问题,而不仅仅是等待调用未被调用async的方法的调用函数
private async void Button_Click_1(object sender, RoutedEventArgs e)
{
TBox.Text += await WebClientDownloader();
TBox.Text += await WebClientDownloadWithAwait();
}
private async static Task<string> WebClientDownloadWithAwait()
{
using (var wc = new WebClient())
{
return await wc.DownloadStringTaskAsync("http://google.com");
}
}
private static Task<string> WebClientDownloader()
{
using (var wc = new WebClient())
{
return wc.DownloadStringTaskAsync("http://google.com");
}
}
有区别吗?他们似乎表现平等。
答案 0 :(得分:4)
区别在于Dispose()
被调用的时间。如果您不使用await
,则WebClient
在您开始下载后立即Dispose()
,在下载完成之前。它可能适用于您的具体情况,但不保证可以正常工作,所以您一定要在这里使用await
。