Ich schreibe Handler für Unhandled Exception Ereignis, das wir eine Ausnahme in eine Datei ausgeben und dann an einen Server zur weiteren Analyse senden. Für jetzt wird es nur zeigen, dass ein Crash passiert ist. Ich habe die Veranstaltung abonniert. In dieser Methode habe ich eine Funktion zur Fehlerbehandlung aufgerufen. Allerdings, wenn ich in der Methode diesen Code schrieb:Asynchrone Methoden in unbehandeltem Ausnahmehandler in Universal Apps
public async Task HandleException(Exception exception)
{
var dialog = new MessageDialog(exception.Message, "Exception occurred");
await dialog.ShowAsync();
}
und es im Debug-Modus läuft das Visual Studio zeigt Visual Studio Just-In-Time-Debugger. An erster Stelle dachte ich, es wäre das Problem, dass ich versuche, die Message Box zu zeigen, wenn der GUI-Thread abstürzt. Ich habe die Funktion zu:
public async Task HandleManagedException(Exception
{
await FileStorage.WriteToFileAsync("someFile.txt", exception.ToString());
}
wo Funktion FileStorage.WriteToFileAsync wie folgt aussieht:
public async Task WriteToFileAsync(string filename, string data)
{
var file = await this.storageFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, data);
}
Im Debugger-Modus, wenn ich Haltepunkt auf await FileIO.WriteTextAsync(file,data)
es bleibt dort stehen. Nach dem Drücken der Fortfahren-Taste erscheint das gleiche Fenster wie im vorherigen Code. Es wird ordnungsgemäß ausgeführt, wenn es von XAML-Ereignissen aufgerufen wird. Ich habe google und StackOverflow nach den asynchronen Methoden im unbehandelten Exception-Handler gesucht, aber es gab nichts, was mein Problem betraf.
Meine Fragen sind: Was ist der Grund für diesen Fehler? Ist es möglich, asynchrone Methoden im Unhandled Exception Handler zu verwenden?
Update: Vielen Dank für die Antworten bisher. Die zweite Frage beantwortete ich selbst nach dem Debuggen des Codes. Es stellte sich heraus, dass es möglich ist und die Funktion wie vorgesehen funktioniert.
Sind Sie sicher, dass Ihr Code WriteToFileAsync ("someFile., Exception.ToString()); ?? – BugFinder
Ja, ich bin sicher, weil ich einen Haltepunkt auf 'warten FileIO.WriteTextAsync (Datei, Daten);', Debugger läuft und dort gestoppt –
und da ein Zitat fehlt - es scheint, dass Sie ein Problem dort haben – BugFinder