У меня есть сервер именованных каналов, аналогичный образцу MSDN по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(. v=vs.85 ).aspx и хотел бы разрешить клиентам отправлять сообщение «выход», которое приводит к корректной остановке сервера.
Итак, в «InstanceThread ()», если получено специальное сообщение, я хотел бы остановить сервер.
Я попытался остановить вызов ConnectNamedPipe ()в основном потоке из отдельного потока для «InstanceThread ()», закрыв дескриптор канала, но это не работает.
Я уже пробовал разные вещи,среди прочего, закрытие общего канала, выход непосредственно из InstanceThread,... но ни один из них не приводит к остановке вызова ConnectNamedPipe ().
Я играл с SetNamedPipeHandleState (), но это сильно усложняет реализацию, а использование перекрывающихся операций ввода-вывода кажется излишним для этого простого требования.
Итак, есть ли более простой способ заставить ConnectNamedPipe ()вернуться, когда серверный процесс должен быть остановлен, а не ждать бесконечного подключения клиента?