Có thể sử dụng Trình xử lý UnhandledException trong Dịch vụ Windows không?Trình xử lý ngoại lệ UnhandledException trong Dịch vụ Windows .NET
Thông thường tôi sẽ sử dụng Thành phần xử lý ngoại lệ được xây dựng tùy chỉnh để ghi nhật ký, nhà điện thoại, v.v. Thành phần này thêm trình xử lý vào System.AppDomain.CurrentDomain.UnhandledException nhưng theo như tôi có thể nói điều này không đạt được bất kỳ điều gì một Dịch vụ Windows để tôi kết thúc với mẫu này trong các điểm nhập của Dịch vụ 2 (hoặc 4) của tôi:
Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.
Try
MyServiceComponent.Start()
Catch ex As Exception
'call into our exception handler
MyExceptionHandlingComponent.ManuallyHandleException (ex)
'zero is the default ExitCode for a successfull exit, so if we set it to non-zero
ExitCode = -1
'So, we use Environment.Exit, it seems to be the most appropriate thing to use
'we pass an exit code here as well, just in case.
System.Environment.Exit(-1)
End Try
End Sub
Có cách nào mà thành phần Xử lý ngoại lệ tùy chỉnh của tôi có thể giải quyết tốt hơn để tôi không phải điền OnStart của tôi với hệ thống ống nước xử lý ngoại lệ lộn xộn?
Tôi thấy rằng sự kiện UnhandledException trong một dịch vụ không nhận được ngoại lệ trong các chủ đề khác, miễn là bạn kết nối bộ xử lý sự kiện rất sớm. Tôi đã kết nối nó trong constructor dịch vụ thay vì phương thức OnStart(). Điều này cũng loại bỏ hệ thống ống nước ngoại lệ xấu xí khỏi OnStart() của bạn. – saille