我在http://msdn.microsoft.com/en-us/library/windows/desktop/aa365588(v=vs.85).aspx有一个类似于 MSDN 示例的命名管道服务器,并希望允许客户端发送导致服务器正常停止的“退出”消息。
所以在“InstanceThread()”中,如果收到特殊消息,我想让服务器停止。
我试图通过关闭管道句柄来停止从“InstanceThread()”的单独线程对主线程中的 ConnectNamedPipe() 的调用,但这不起作用。
我已经尝试了各种方法,其中包括关闭整个管道、直接从 InstanceThread 退出……但它们都不会导致对 ConnectNamedPipe() 的调用停止。
我玩过 SetNamedPipeHandleState(),但它使实现变得非常复杂,而且对于这个简单的要求,使用重叠 I/O 似乎有点过分了。
那么有没有更简单的方法让 ConnectNamedPipe() 在服务器进程应该停止而不是无休止地等待客户端连接时返回?