我有ac#Windows Store应用程序。我正在尝试单击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中,出现编译器错误:
“ await”运算符只能在异步lambda表达式中使用。考虑使用'async'修饰符标记此lambda表达式。
该方法标有await
。如果我await
从showSaveDialog之前删除,它会编译(并且可以工作),但会收到警告,提示我确实应该使用await
await
在这种情况下如何使用?
您必须将lambda表达式标记为async
,如下所示:
messageDialog.Commands.Add(new UICommand("No", async (command) =>
{
await showSaveDialog();
}));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句