별도 스레드에서 발생한 예외 포착
멀티 스레드 애플리케이션에서는 별도 스레드에서 발생하는 예외를 처리하는 것이 중요합니다. 이 가이드에서는 이를 달성하기 위한 두 가지 접근 방식을 보여줍니다.
.NET 4 이상에서 작업 기반 예외 처리
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); }
.NET 3.5의 예외 처리
.NET 3.5의 경우 다음 접근 방식을 고려하세요.
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);
위 내용은 .NET의 개별 스레드에서 예외를 포착하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!