У меня есть приложение для Windows С#. Я пытаюсь запустить MessageDialog
, когда нажата одна из кнопок команды внутри другого MessageDialog
. Дело в том, чтобы предупредить пользователя о том, что их содержимое несохранено, и если они нажмут кнопку "Отмена", он предложит им сохранить с помощью отдельного диалогового окна сохранения.
Здесь моя функция showCloseDialog:
private async Task showCloseDialog()
{
if (b_editedSinceSave)
{
var messageDialog = new MessageDialog("Unsaved work detected. Close anyway?", "Confirmation Message");
messageDialog.Commands.Add(new UICommand("Yes", (command) =>
{
// close document
editor.Document.SetText(TextSetOptions.None, "");
}));
messageDialog.Commands.Add(new UICommand("No", (command) =>
{
// save document
await showSaveDialog();
}));
messageDialog.DefaultCommandIndex = 1;
await messageDialog.ShowAsync();
}
}
В VS я получаю ошибку компилятора:
Оператор 'wait' может использоваться только в выражении async lambda. Рассмотрите маркировку этого лямбда-выражения с помощью модификатора 'async'
Метод помечен await
. Если я удалю await
из showSaveDialog, он скомпилирует (и работает), но я получаю предупреждение, что я действительно должен использовать await
Как использовать await
в этом контексте?