C# NamedPipeClientStream-无法取消连接

C# NamedPipeClientStream-无法取消连接,c#,named-pipes,C#,Named Pipes,我想使用NamedPipeClientStream: var _Pipe = new NamedPipeClientStream(".", "test-a", PipeDirection.In); _Pipe.Connect(); 不幸的是,无法传递取消令牌。那么,如何取消连接呢?我不想超过超时时间-我的客户端需要“永远”等待,直到连接成功或请求取消连接异步不可用 编辑: 我使用的是.NET Frameowkr 4.5.2类库,没有像ConnectAsync这样的方法(只有Connect可用)

我想使用
NamedPipeClientStream

var _Pipe = new NamedPipeClientStream(".", "test-a", PipeDirection.In);
_Pipe.Connect();
不幸的是,无法传递取消令牌。那么,如何取消连接呢?我不想超过超时时间-我的客户端需要“永远”等待,直到连接成功或请求取消<代码>连接异步不可用

编辑: 我使用的是.NET Frameowkr 4.5.2类库,没有像ConnectAsync这样的方法(只有Connect可用)

若要取消,请在该管道上调用Close()或Dispose()方法。如果以后需要重试,只需为此创建另一个管道

我90%确信,在Connect()调用中休眠的线程将立即唤醒,并在出现异常时失败。如果调用Dispose,则可能是ObjectDisposedException,如果调用Close(),则可能是某些“管道正在关闭”。如果调用Close(),则可能是Win32异常


我从未专门使用管道进行过测试,但Windows中通常会发生这种情况,阻止文件和套接字的I/O调用。

为什么
ConnectAsync
不可用?这正是在这里使用的正确工具。我不知道。我使用的是Framework4.5.2类库,没有这样的方法。我认为没有任何操作系统版本支持4.5.2,但不支持4.6<代码>取消异步在4中添加。6@Damien_The_Unbeliever你是对的。但我们与客户达成了协议,我们需要基于4.5.2框架构建解决方案。然后您的需求会发生冲突。您有一个要求,即通过取消连接,我们知道取消支持已在4.6中明确添加,您还有另一个要求,即保留在4.5.2中。请某人(如项目经理、客户等)帮助解决冲突,而不是期待技术解决。哦,绝对值得一试。谢谢你的提示!请注意,在.NET 3.5上,关闭/释放似乎不会导致连接(int超时)取消阻止或抛出。悲伤的时刻。