Heim > Backend-Entwicklung > C++ > Wie fängt man Ausnahmen von separaten Threads in .NET ab?

Wie fängt man Ausnahmen von separaten Threads in .NET ab?

Linda Hamilton
Freigeben: 2025-01-05 06:54:39
Original
566 Leute haben es durchsucht

How to Catch Exceptions from Separate Threads in .NET?

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 anstatt neue Threads zu erstellen. Mit Task können Ausnahmen über die Eigenschaft .Exceptions abgerufen werden. Hier sind zwei Möglichkeiten, dies zu tun:

  • In einer separaten Methode:
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);
}
Nach dem Login kopieren
  • In derselben Methode :
Task<int> task = new Task<int>(Test);
task.Start();

try
{
    task.Wait();
}
catch (AggregateException ex)
{
    Console.WriteLine(ex);
}
Nach dem Login kopieren

Ausnahmebehandlung in .NET 3.5

Berücksichtigen Sie für .NET 3.5 die folgenden Ansätze:

  • Im Kinderthread:
Exception exception = null;
Thread thread = new Thread(() => Test(0, 0));
thread.Start();

thread.Join();

if (exception != null)
    Console.WriteLine(exception);
Nach dem Login kopieren
  • Im Caller's Thread:
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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage