Heim >Backend-Entwicklung >C++ >Wie fängt man Ausnahmen von separaten Threads in .NET ab?
In einem separaten Thread ausgelöste Ausnahmen abfangen
In Multithread-Anwendungen ist es wichtig, Ausnahmen zu behandeln, die in separaten Threads auftreten. In diesem Leitfaden werden zwei Ansätze gezeigt, um dies zu erreichen.
Aufgabenbasierte Ausnahmebehandlung in .NET 4 und höher
Erwägen Sie die Verwendung von Task
Task<int> task = new Task<int>(Test); task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted); task.Start(); ... static void ExceptionHandler(Task<int> task) { Console.WriteLine(task.Exception.Message); }
Task<int> task = new Task<int>(Test); task.Start(); try { task.Wait(); } catch (AggregateException ex) { Console.WriteLine(ex); }
Ausnahmebehandlung in .NET 3.5
Berücksichtigen Sie für .NET 3.5 die folgenden Ansätze:
Exception exception = null; Thread thread = new Thread(() => Test(0, 0)); thread.Start(); thread.Join(); if (exception != null) Console.WriteLine(exception);
Exception exception = null; Thread thread = new Thread(() => { try { Test(0, 0); } catch (Exception ex) { lock (exceptionLock) { exception = ex; } } }); thread.Start(); thread.Join(); if (exception != null) Console.WriteLine(exception);
Das obige ist der detaillierte Inhalt vonWie fängt man Ausnahmen von separaten Threads in .NET ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!