我不知道等待任务和使用 task.Wait() 之间的区别,但是对于 MessageDialog.ShowAsync 方法,第一个它可以工作,但不能与第二个(而这两种语法适用于其他异步方法)。
如果有人能解释为什么我会感兴趣!
// this don't work, no dialog is shown (and UI is block)
var dialog = new MessageDialog("fail");
var task = dialog.ShowAsync().AsTask();
task.Wait();
// this work
var dialog = new MessageDialog("success");
var task = dialog.ShowAsync().AsTask();
await task;
你会问我为什么要这样做,因为我需要在 catch 块中显示一个对话框(以显示错误消息)并等待用户关闭对话框,然后在 catch 块之后继续(是的,我们可以'不要在 catch 块中使用 await,但我们可以使用 Task.Wait(),我已经成功地将它与其他异步方法一起使用)。