Zunächst einmal der Code, der ohne Fehler läuft, aber deckt nicht alles, was ich es brauche:Halt Code der Ausführung, aber nicht die Anwendung
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...
}
Die Grundvoraussetzung ist, dass, wenn es nicht sicher ist, zu retten In einem Meldungsdialog wird dem Benutzer mitgeteilt, dass die App neu gestartet werden muss, und dann "Application.Current.Exit()" ausführen, wenn sie dann auf die Schaltfläche "Okay" tippen.
Mein Problem ist, dass ich meinen Code brauche, um die Ausführung zu beenden, wenn der Neustart getroffen wird. Im Augenblick beendet 'return' nur diese Methode, aber danach wird es andere Dinge in der Methode, die SaveData() aufgerufen hat, fortsetzen, bis meine restartMessage wirksam wird, und das ist nicht gut.
Ich überlegte, 'Application.Current.Exit()' über die 'return' Anweisung zu setzen, aber das wird die Dinge herunterfahren, bevor meine Fehlermeldung zu sehen ist. Was auch nicht gut ist.
Die andere Lösung war das Überspringen der gesamten CoreDispatcher-Sache und das Ausführen von ShowAsync() allein, außer das würde einen anderen bekannten Fehler auslösen. Grundsätzlich habe ich ein paar MessageDialogs, die die SaveData() -Methode aufrufen und einen MessageDialog öffnen, wenn ein anderer MessageDialog bereits geöffnet ist, ist wiederum nicht gut.
Das ist es: Ich brauche etwas, um zu verhindern, dass mein Codeformular ausgeführt wird, ohne die gesamte Anwendung zu beenden oder die Anzeige meiner Fehlermeldung zu verhindern. Was kann ich tun?
Sie müssen warten, bis der Benutzer auf die Schaltfläche OK klickt. Verwenden Sie MessageDialog.Commands. –
Das mache ich jetzt. Mein Problem war, dass der Code weiterhin ausgeführt wird, bis das passiert, und ich möchte es nicht. Kann ich damit aufhören? –