2009-08-01 41 views
6

Tôi đang sử dụng system.timer trong một ứng dụng dịch vụ cửa sổ (C#) và đã thêm:Unhandled Exception trong Windows Service

AppDomain currentDomain = AppDomain.CurrentDomain; 
currentDomain.UnhandledException += 
     new UnhandledExceptionEventHandler(MyExceptionHandler); 

Để xử lý trường hợp ngoại lệ của tôi, làm việc này trong một dịch vụ Windows vì nó dường như không làm việc? Có ai có ý tưởng thay thế nào không?

Trả lời

4

Cơ chế này sẽ hoạt động để nắm bắt ngoại lệ không được xử lý trong bất kỳ môi trường nào bao gồm Windows Services. Tuy nhiên có một số hạn chế về loại ngoại lệ nào có thể được xử lý theo cách này. Ví dụ, một StackOverFlowException có thể được unhandled nhưng làm với bản chất của nó, bạn sẽ không bao giờ nhìn thấy nó đi qua một xử lý UnhandledException.

Tại sao bạn cho rằng tính năng này không hoạt động? Bạn đã thử đính kèm quy trình bằng trình gỡ rối, cho phép ngoại lệ cơ hội đầu tiên và xem điều gì đang xảy ra?

1

Tại sao bạn có ngoại lệ không được xử lý trong một dịch vụ? Điều gì ngoại lệ? Một số ngoại lệ có "special behavior" (and another link here for .NET 4 changes to corrupted state exceptions).

Ngoài ra, bạn đang cố gắng làm gì trong trình xử lý? Có lẽ các hành động mà bạn đang cố gắng thực hiện trong trình xử lý là những gì bị giới hạn khi chạy như một dịch vụ.

Các vấn đề liên quan