我有一个C# Windows商店应用程序。 我试图在另一个MessageDialog
的其中一个命令按钮被点击时启动MessageDialog
。 这样做的目的是警告用户其内容未保存,如果他们点击取消,它将提示他们使用单独的保存对话框进行保存。
这是我的“showCloseDialog”函数:
private async Task showCloseDialog()
{
if (b_editedSinceSave)
{
var messageDialog = new MessageDialog("Unsaved work! 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 中我得到一个编译错误:
“await”操作符只能在异步 Lambda 表达式中使用。请考虑使用“async”修饰符标记此 Lambda 表达式。
该方法被标记了 await
。如果我从 showSaveDialog 前面移除 await
,它就可以编译(并工作),但我会收到警告,提示我真的应该使用 await
。
在这个上下文中,我该如何使用 await
?
(command) =>
。 - Silvermind