我正在设计一个客户端 - 服务器应用程序,客户端请求各种数据,服务器从本地SQL服务器检索它。
我需要在应用程序退出时执行一个函数,以告知相关服务服务器处于脱机状态,但我无法确定完全如何执行此操作。
This related question似乎有答案:
处理AppDomain.ProcessExit event,这是在应用程序的父进程退出时引发的。
然而,当使用下面的代码时,onExit
子例程不会在应用程序关闭时执行,可能是因为我使用了错误的方法解决了这个问题,或者在应用程序退出时没有执行Environment.Exit
:
Dim myConn As SqlConnection
Dim cmd As New SqlCommand
Sub Main()
AddHandler AppDomain.CurrentDomain.ProcessExit, AddressOf onExit
End Sub
Public Sub onExit(sender As Object, e As EventArgs)
'Unrelated code removed here.
End Sub
为了澄清,我需要它在用户关闭应用程序时执行onExit
;我不打算通过控制台命令关闭应用程序。
我也想过,也许我可以在Handle
添加onExit
,但我不知道在这里使用什么。
当用户尝试通过标准Windows资源管理器用户界面关闭应用程序时,是否可以可靠地执行子例程或函数? 这是一个控制台应用程序,我知道这可以在Windows窗体中轻松完成,并认为它在控制台中很容易。 显然不是。
答案 0 :(得分:1)
您需要在此示例中导入SetConsoleCtrlHandler:
Module Module1
Public Declare Function SetConsoleCtrlHandler Lib "kernel32" (Handler As ConsoleCtrlDelegate, Add As Boolean) As Boolean
Public Delegate Sub ConsoleCtrlDelegate()
Sub Main()
SetConsoleCtrlHandler(New ConsoleCtrlDelegate(AddressOf OnExit), True)
Console.WriteLine("Please try to close down...")
Console.ReadLine()
End Sub
Sub OnExit()
MsgBox("Help I'm being closed!")
End Sub
End Module