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