ror*_*yok 52 c# lambda modal-dialog async-await windows-store-apps
我有一个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();
}
}
Run Code Online (Sandbox Code Playgroud)
在VS中我得到一个编译器错误:
'await'运算符只能在异步lambda表达式中使用.考虑使用'async'修饰符'标记此lambda表达式
该方法标有await
.如果我await
从showSaveDialog之前删除它,它编译(并工作),但我得到一个警告,我真的应该使用await
我如何await
在这种情况下使用?
Bor*_*kov 89
您必须将lambda表达式标记为async
,如下所示:
messageDialog.Commands.Add(new UICommand("No", async (command) =>
{
await showSaveDialog();
}));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37773 次 |
最近记录: |