Maison >développement back-end >C++ >Comment détecter les exceptions de threads séparés dans .NET ?
Détecter les exceptions levées dans un thread séparé
Dans les applications multithread, il est crucial de gérer les exceptions qui se produisent dans des threads séparés. Ce guide présentera deux approches pour y parvenir.
Gestion des exceptions basée sur les tâches dans .NET 4 et supérieur
Envisagez d'utiliser 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); }
Gestion des exceptions dans .NET 3.5
Pour .NET 3.5, envisagez les approches suivantes :
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);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!