我想知道这个例子中的线程是如何运行的。有异步事件处理程序,它调用另一个异步方法,它有两个等待。我能理解这样的流程吗?
我的假设正确吗?或者说这里出现了僵局。
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;
}
发布于 2017-01-25 17:53:34
你的流量几乎是正确的。只有一个修改:方法不可能返回两次(步骤4和步骤9)。因为LoadStringAsync
已经返回了一个未完成的任务,所以它直接返回到第二个await
的UI线程。
在您提供的代码中没有死锁。
https://stackoverflow.com/questions/41857099
复制相似问题