我在 C# 中使用 NamedPipeServerStreams,我们的客户将使用 Win32 CreateFile 和 WaitNamedPipe 方法建立连接。
以前我们的服务器也是 Win32 并且在调用 CreateNamedPipe() 时将“DefaultTimeOut”指定为管道构造的一部分。
根据我所读/所见,我的理解是客户端随后继承此超时值并在调用 WaitNamedPipe 时使用它。
Microsoft 的CreateNamedPipe的 MSDN 文档对DefaultTimeOut 参数有以下描述 -
*nDefaultTimeOut [in] 默认超时值,以毫秒为单位,如果 WaitNamedPipe 函数指定 NMPWAIT_USE_DEFAULT_WAIT。命名管道的每个实例都必须指定相同的值。*
当更改为使用 .NET NamedPipeServerStream 时,似乎无法将此默认超时值传递给构造函数(或其他方式),并且我的客户端现在经常在 WaitNamedPipe 信号量上超时,而以前没有。如果不更改我们所有的客户来指定我们希望避免的自己的超时,我似乎无法在 .NET 中找到这样做的方法。.NET NamedPipe 代码肯定只是将 Win32 API 包装在下面吗?