Додаток - це сервер, який просто працює, поки система не вимкнеться або отримає Ctrl + C або вікно консолі не буде закрито.
Через надзвичайний характер заявки неможливо "витончено" вийти. (Можливо, я міг би кодувати іншу програму, яка надсилатиме повідомлення про відключення сервера, але це було б надмірно для однієї програми і все одно недостатньо для певних обставин, наприклад, коли сервер (Фактична ОС) фактично вимикається.)
Через ці обставини я додав " ConsoleCtrlHandler ", де я зупиняю свої потоки та очищаю свої COM-об'єкти тощо ...
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
Здається, це налаштування працює чудово. Ось посилання на деякий код C # для того самого.