Die Anwendung ist ein Server, der einfach ausgeführt wird, bis das System heruntergefahren wird oder Strg + C empfängt oder das Konsolenfenster geschlossen wird.
Aufgrund des außergewöhnlichen Charakters der Anwendung ist es nicht möglich, "ordnungsgemäß" zu beenden. (Es kann sein, dass ich eine andere Anwendung codieren könnte, die eine Meldung zum "Herunterfahren des Servers" sendet, dies jedoch für eine Anwendung übertrieben und für bestimmte Umstände, z. B. wenn der Server (tatsächliches Betriebssystem) tatsächlich heruntergefahren wird, immer noch unzureichend ist.)
Aufgrund dieser Umstände habe ich einen " ConsoleCtrlHandler " hinzugefügt, in dem ich meine Threads stoppe und meine COM-Objekte bereinige usw.
Public Declare Auto Function SetConsoleCtrlHandler Lib "kernel32.dll" (ByVal Handler As HandlerRoutine, ByVal Add As Boolean) As Boolean
Public Delegate Function HandlerRoutine(ByVal CtrlType As CtrlTypes) As Boolean
Public Enum CtrlTypes
CTRL_C_EVENT = 0
CTRL_BREAK_EVENT
CTRL_CLOSE_EVENT
CTRL_LOGOFF_EVENT = 5
CTRL_SHUTDOWN_EVENT
End Enum
Public Function ControlHandler(ByVal ctrlType As CtrlTypes) As Boolean
.
.clean up code here
.
End Function
Public Sub Main()
.
.
.
SetConsoleCtrlHandler(New HandlerRoutine(AddressOf ControlHandler), True)
.
.
End Sub
Dieses Setup scheint perfekt zu funktionieren. Hier ist ein Link zu einem C # -Code für dasselbe.