Я не знаю разницы между ожиданием задачи и использованием 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 (и да, мы можем не используйте await в блоке catch, но мы можем использовать Task.Wait(), я успешно использовал его с другими асинхронными методами).