'await'操作符只能在asynchronouslambdaexpression式中使用
我有ac#的Windowsapp store应用程序。 我试图启动一个MessageDialog时,另一个MessageDialog中的命令button之一被点击。 关键是要警告用户他们的内容是未保存的,如果他们点击取消,则会提示他们使用单独的保存对话框进行保存。 
这是我的“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'操作符只能在asynchronouslambdaexpression式中使用。 考虑用'asynchronous'修饰符标记这个lambdaexpression式
 该方法标有await 。 如果我删除showSaveDialog之前等待,它编译(和工程),但我得到一个警告,我真的应该使用await 
 我在这方面如何使用await ? 
 您必须将您的lambdaexpression式标记为async ,如下所示: 
 messageDialog.Commands.Add(new UICommand("No", async (command) => { await showSaveDialog(); }));