2010-06-12 2 views
0

24 시간마다 한 번씩 실행을 예측하지 못하게하는 멀티 스레드 Windows 서비스가 있습니다. 이벤트 로그에 쓰고 있는데 잘 처리되지만 서비스가 중단 될 때마다 이벤트 로그에 메시지가 없습니다 (AutoLog = true 임에도 불구하고 서비스가 중지되었다고해도). 잡히지 않은 예외가 로그에 직접 쓰여지는 방법이 있습니까? 원래 스레드에없는 경우에도 마찬가지입니까?다중 스레드 Windows 서비스의 예외를 이벤트 로그에 기록

답변

1

우선, 스폰하는 스레드는 던져진 예외를 포착하고 (적절한 경우 제비 또는 재발행) 최상위 레벨을 가져야합니다. 그 외에도 AppDomain.UnhandledException 이벤트를 사용하여 처리되지 않은 예외를 잡아 로그 아웃 할 수 있습니다.

+0

최고 수준의 try-catch에서 무엇을 포착하겠습니까? 그 수준에서 나는 네가 무엇을 붙잡고 있는지 확신하지 못한다고 생각하고 있는데, 그 경우에 나는 너가 아무것도 잡히지 않아야한다고 생각했다. – Dlongnecker

+0

@Ziplin : 그것은 'catch'와 'throw'시나리오입니다. 예외 상황에서 복구 할 수는 없지만 최상위 레벨에서 정보를 수집하면 정보 (또는 유사한 내용)를 기록한 다음 다시 기록 할 수 있습니다. –

+0

그래서이 경우 catch (예외 e) {// 로그; 던져 전자; }? 나는 그것이 항상 no no라고 생각했다. – Dlongnecker

관련 문제