关闭VB.NET控制台应用程序中的功能

时间:2012-04-11 03:24:30

标签: .net vb.net console-application exit exit-code

如果在使用Environment.Exit(0)时检测到控制台关闭时如何触发某个功能?

1 个答案:

答案 0 :(得分:6)

执行此操作的最简单方法可能是处理AppDomain.ProcessExit event,这是在应用程序的父进程退出时引发的。

例如:

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

但是调用Environment.Exit可能不是原始问题的最佳解决方案。一般来说,the only time it is necessary to use this method is when there might be other foreground threads running。在这种情况下,值得调查优雅地终止其他线程的方法,而不采用会破坏整个过程的严厉措施。

Environment.Exit,虽然名字听起来有点令人愉快,但却是一个非常残酷的措施。它没有单击Windows任务管理器中的“结束任务”那么糟糕(并注意,如果你,则不会引发ProcessExit事件,这意味着上述建议将会不行,但它可能不是你真正想要的解决方案。