Bir C# Windows Mağaza uygulaması var. Başka bir MessageDialog
içindeki komut düğmelerinden birine tıklandığında MessageDialog
başlatmaya çalışıyorum. Bunun amacı kullanıcıyı içeriğinin kaydedilmemiş olduğu konusunda uyarmak ve iptal etmeleri durumunda ayrı bir kayıt iletişim kutusu kullanarak kaydetmelerini ister. yöntem await
ile işaretlenmiştir'Beklemek' operatörü sadece bir uyumsuz lambda ifadesi içinde kullanılabilir
The 'await' operator can only be used within an async lambda expression. Consider marking this lambda expression with the 'async' modifier`
: VS In
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();
}
}
Bir derleyici hatası alıyorum:
İşte benim "showCloseDialog" fonksiyonu bulunuyor. Ben showSaveDialog önce gelen await
kaldırırsanız, derler (ve çalışır) ama ben gerçekten await
nasıl bu bağlamda await
kullanırım kullanmalıdır bir uyarı olsun?
lambda temsilci zaman uyumsuz olarak işaretlenmemiş '(komut) =>' Bir yan not olarak – Silvermind
ben bir program alırsanız, o sorar ben "Kaydedilmemiş iş tespit edildi. Yine de kapatın?" ve "Hayır" ı tıklayın, işlemin iptal edilmesini beklerim. Programın dosyayı kaydetmesini veya dosyayı kaydetmeyi teklif etmesini beklemiyorum. Kullandığınız davranış için "Kaydedilmemiş iş tespit edildi. Kapatmadan önce kaydet"? daha uygun olabilir. – hvd
@hvd bu sadece şu anda yer tutucu metni, ancak öneriyi takdir ediyorum! – roryok