How to Close Console Application Gracefully on Windows Shutdown

后端 未结 3 923
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-20 22:50

I am trying to close my vb.net console app gracefully when windows shutdown occurs. I have found examples that call the Win32 function SetConsoleCtrlHandler that all basically

3条回答
  •  星月不相逢
    2021-01-20 23:31

    The simplest way of doing this is probably to handle the AppDomain.ProcessExit event, which is raised when the application's parent process exits.

        For example:
            Module MyApp
    
            Sub Main()
                ' Attach the event handler method
                AddHandler AppDomain.CurrentDomain.ProcessExit, AddressOf MyApp_ProcessExit
    
                ' Do something
                ' ...
    
                Environment.Exit(0)
            End Sub
    
            Private Sub MyApp_ProcessExit(sender As Object, e As EventArgs)
                Console.WriteLine("App Is Exiting...")
            End Sub
    
        End Module
    

    But calling Environment.Exit may not be the best solution to your original problem. In general, the only time it is necessary to use this method is when there might be other foreground threads running. And in that case, it's worth investigating ways of gracefully terminating those other threads without resorting to draconian measures that kill the entire process.

    Environment.Exit, despite the somewhat pleasant-sounding name, is a pretty brutal measure. It's not quite as bad as clicking "End Task" in the Windows Task Manager (and note that if you do that, the ProcessExit event will not be raised, meaning that the above suggestion will not work), but it's probably not the solution you really want, either.

提交回复
热议问题