我浏览了一个 msdn 示例代码,其中单击按钮时调用函数,调用例程时使用 Await 关键字,并且函数使用了 async 关键字。
private async void StartButton_Click(object sender, RoutedEventArgs e)
{
int contentLength = await AccessTheWebAsync();
resultsTextBox.Text +=
String.Format("\r\nLength of the downloaded string: {0}.\r\n", contentLength);
}
async Task<int> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
DoIndependentWork();
string urlContents = await getStringTask;
return urlContents.Length;
}
void DoIndependentWork()
{
resultsTextBox.Text += "Working . . . . . . .\r\n";
}
- 当
AccessTheWebAsync
被调用然后使用await关键字,这是什么意思? - 当这个函数 AccessTheWebAsync() 将被执行时,
DoIndependentWork()
函数会被调用,我猜这里的控制会一直等到这个函数DoIndependentWork()
完成。我对吗?
还有另一个语句叫做
string urlContents = await getStringTask;
为什么他们在这里使用等待。如果我们不在这里使用 await 那么会发生什么?
请指导我了解它是如何工作的代码。