WindowsサービスでUnhandledExceptionハンドラを使用することはできますか?.NET WindowsサービスのUnhandledExceptionハンドラ
通常、私はロギング、電話機のホームなどを行うカスタムビルド例外処理コンポーネントを使用します。このコンポーネントは、System.AppDomain.CurrentDomain.UnhandledExceptionにハンドラを追加しますが、これまで何も達成できないことがわかります
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
私のカスタム例外処理コンポーネントは、より良いので、私は入力する必要はありません。これに対処することができる方法があります:Windowsサービスは、私は私の2(または4)サービスのエントリポイントでこのパターンで終わるので、私のOnStartの乱雑な例外処理配管?
私は、サービス内のUnhandledExceptionイベントが非常に早い時期にイベントハンドラを終了する限り、他のスレッドで例外を受け取ることがわかりました。私は、OnStart()メソッドではなくサービスコンストラクタでそれを配線しました。これにより、あなたのOnStart()から醜い例外配管も取り除かれます。 – saille