37
我有一个c#Windows Store应用程序。当点击另一个MessageDialog
内的命令按钮之一时,我试图启动一个MessageDialog
。关键是要警告用户他们的内容未保存,如果他们点击取消,它会提示他们使用单独的保存对话框进行保存。'await'操作符只能在异步lambda表达式中使用
这里是我的 “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我得到一个编译错误:
The 'await' operator can only be used within an async lambda expression. Consider marking this lambda expression with the 'async' modifier`
方法标有await
。如果我从showSaveDialog之前删除await
,它编译(和作品),但我得到的,我真的应该使用await
如何在这种情况下使用await
一个警告?
拉姆达代表没有被标记为异步'(命令)=>' – Silvermind
作为一个方面说明,如果我得到一个程序,要求我“检测到未保存的工作,仍然关闭?”,然后点击“否”,我预计操作被取消。我不希望程序保存文件,或提供保存文件。对于你之后的行为,问题“检测到未保存的工作,在关闭之前保存?”可能更合适。 – hvd
@ hvd此刻此处仅为占位符文字,但我很欣赏这个建议! – roryok