首先代碼,運行沒有錯誤,但不涵蓋一切,我需要它:暫停代碼的執行,而不是應用程序
public async Task SaveData()
{
// MessageDialog restartMessage;
// ^^ This was made global and is defined in SafeToSave()
// Check if it's safe to save
await SafeToSave();
if (restartMessage != null)
{
CoreDispatcher cD = Window.Current.CoreWindow.Dispatcher;
await cD.RunAsync(CoreDispatcherPriority.Normal, async() =>
{
await restartMessage.ShowAsync();
// This WILL invoke 'Application.Current.Exit()'
});
return;
// Issue is right around here...
}
// Other code...
}
的基本前提是,如果它是不安全的保存,消息對話框會告訴用戶應用程序需要重新啓動,然後在點擊'好'按鈕時執行'Application.Current.Exit()'。
我的問題是,我需要我的代碼停止執行時,重新啓動命中。現在「返回」只會結束這個方法,但在此之後,它將繼續在調用SaveData()的方法中執行其他操作,直到我的restartMessage生效,這並不好。
我認爲把'Application.Current.Exit()'放在'return'語句的上面,但是在我的錯誤消息可以被看到之前這會關閉。這也不好。
另一種解決方案是跳過整個CoreDispatcher的事情,只是自己運行ShowAsync(),除了會觸發不同的已知錯誤。基本上我有一些調用SaveData()方法的MessageDialogs,當另一個MessageDialog已經打開時打開一個MessageDialog也是不好的。
就是這樣:我需要一些東西來阻止我的代碼表單執行,而不會殺死整個應用程序或阻止顯示我的錯誤消息。我能做什麼?
您必須等到用戶單擊確定按鈕。使用MessageDialog.Commands。 –
這就是我現在正在做的。我的問題是,代碼繼續執行,直到發生這種情況,我不希望它。我能阻止嗎? –