2011-02-10 4 views

답변

19

아니요. 다른 스레드의 예외를 catch하지 않습니다. t. 당신은 그 실에서 그들을 붙잡고 그들을 적절하게 다루어야 할 것입니다.

그러나 AppDomain의 UnhandedException 이벤트가이를보고합니다.

+0

Ok, 고맙습니다 ... – xbonez

+7

WinForms의 경우 'Application.ThreadException', WPF의 경우'Application.DispatcherUnhandledException', 구체적으로는 'AppDomain.UnhandledException'입니다. –

+0

@xbonez 또한 확장하려면 질문의 코드가 새 스레드를 시작한 다음 새 스레드가 실행을 시작하는 동안 catch 블록을 지나서 바로 처리를 계속합니다. –

4

System.ComponentModel.BackgroundWorker를 살펴보십시오! 예외 처리 및 취소 처리 기능이 있습니다.

+0

죄송합니다. 질문에 답변하지 않았습니다. catch는 다른 스레드로부터 예외를 가져 오지 않습니다. BackgroundWorker는이 상황에 대처하도록 설계되었습니다. –

+0

'BackgroundWorker'가 스레드를 가로 지르는 예외를 잡아낼 것이라고 말하고 있습니까? 예를 들어'RunWorkAsync'에서 다른 쓰레드를 시작하는 메소드를 호출하고 그 쓰레드가 예외를 가지고 있다면, 그것은 'WorkCompleted' 이벤트에 의해 처리 될 것인가? 나는 그것을 시도하고 그것을 잡을 수없는 것으로 보인다. – Harrison

+0

RunWorkAsync는 다른 스레드에서 코드를 실행하므로 다른 스레드를 시작할 필요가 없습니다. 실행중인 스레드에서만 예외를 catch합니다. –

관련 문제