如果在使用Environment.Exit(0)
时检测到控制台关闭时如何触发某个功能?
答案 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
事件,这意味着上述建议将会不行,但它可能不是你真正想要的解决方案。