如果我使用Task.Wait()而不是await,MessageDialog任务不显示task.Wait(),但对于MessageDialog.ShowAsync方法,第一个方法适用,但第二个方法无效(而这两种语法都适用于其他异步方法)。如果有人可以解释原因,我会很感兴趣!//这不起作用,没有显示对话框(并且UI是块)vardialog=newMessageDialog("fail");变种任务=对话框。显示异步()。作为任务();任务。等待();//这项工作vardialog=newMessageDialog("success");vartask=dialog.ShowAsync().AsTask();等待任务;你会问我为什么要这样做,这是因为我需要在catch块框中显示一个对话框(显示错误消息)并等待用户在catch块之后继续关闭对话框(是的我们可以在中使用awaitcatch块,但我们可以使用Task.Wait(),我已成功使用其他异步方法)。显示对话框(并响应其中的按钮点击)必须从UI线程完成。但是,如果您在UI线程上调用Wait(),您基本上是在说在任务完成之前该线程上不会发生任何其他事情。这就是无法显示对话框的原因,也是您的应用程序冻结的原因。所以,UI线程在等待对话框,对话框却在等待UI线程,这是一个典型的死锁。我相信在UI线程上使用Wait()是C#5GUI应用程序中最常见的死锁原因。task.Wait()阻塞直到任务完成,等待继续处理。我的猜测是无法显示消息对话框,因为UI被阻止了。以上是C#学习教程:如果我用Task.Wait()代替await,MessageDialog任务共享的所有内容都不会显示。如果对大家有用,需要进一步了解C#学习教程,还望大家多多关注~本文为收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
