[英]Multi layer async control flow
我想知道本例中的线程流向。 有一个异步事件处理程序,它调用另一个异步方法,该方法有两个等待。 我可以理解这样的流程:
我的假设正确吗? 否则这里有僵局。
private async void button1_Click(object sender, RoutedEventArgs e)
{
string s = await LoadStringAsync();
textBox1.Text = s;
}
static async Task<string> LoadStringAsync()
{
string firstName = await GetFirstNameAsync();
string lastName = await GetLastNameAsync();
return firstName + ” ” + lastName;
}
您的流程几乎是正确的。 只是一个修改:方法不可能返回两次(步骤4和9)。 由于LoadStringAsync
已经返回了未完成的任务,因此它仅在第二个await
直接返回到UI线程。
您提供的代码没有死锁。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.