<p>最好先调用<code>DisconnectNamedPipe</code>,然后再调用<code>CloseHandle</code>,尽管<code>CloseHandle</code>应该清理所有内容。在</p>
<p>MSDN文档有点模糊,它们的<a href="http://msdn.microsoft.com/en-us/library/aa365588%28v=vs.85%29.aspx" rel="noreferrer">server example</a>非常基本。至于是否重用管道句柄,这似乎是你自己的选择。<a href="http://msdn.microsoft.com/en-us/library/aa365166%28v=vs.85%29.aspx" rel="noreferrer">Documentation</a>for <code>DisconnectNamedPipe</code>似乎表示可以在断开连接后再次调用该句柄上的<code>ConnectNamedPipe</code>,从而为新客户机重用管道句柄。<code>ConnectNamedPipe</code>的作用似乎是将一个连接客户机分配给一个句柄。在</p>
<p>请确保您正在清理管道,尽管MSDN声明<a href="http://msdn.microsoft.com/en-us/library/aa365150%28v=vs.85%29.aspx" rel="noreferrer">the following</a></p>
<blockquote>
<p>Every time a named pipe is created, the system creates the inbound and/or outbound buffers using nonpaged pool, which is the physical memory used by the kernel. The number of pipe instances (as well as objects such as threads and processes) that you can create is limited by the available nonpaged pool. Each read or write request requires space in the buffer for the read or write data, plus additional space for the internal data structures.</p>
</blockquote>
<p>如果您要创建/销毁大量管道,我也会记住上述内容。我想,如果有很多客户机,并且对池有一些增长/收缩机制,那么最好操作管道句柄池。在</p>