How can I set up .NET UnhandledException handling in a Windows service?

后端 未结 5 771
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-03 00:31
protected override void OnStart(string[] args)
{
    AppDomain.CurrentDomain.UnhandledException +=
        new UnhandledExceptionEventHandler(CurrentDomain_Unhandled         


        
5条回答
  •  孤街浪徒
    2020-12-03 01:19

    The reason that the UnhandledException event on the current AppDomain does not fire is how services are executed.

    1. User sends a Start command from the Windows Service Control Manager (SCM).
    2. The command is received by the framework's ServiceBase implementation and dispatched to the OnStart method.
    3. The OnStart method is called.

    Any exception which is thrown by OnStart is handled in the base class, logged to the Event Log, and translated into an error status code returned to the SCM. So the exception never propagates to the AppDomain's unhandled exception handler.

    I think you would find that an unhandled exception thrown from a worker thread in your service would be caught by the AppDomain's unhandled exception handler.

提交回复
热议问题