小编Chr*_*ris的帖子

取消NamedPipeClientStream.Read调用

我在网上看了一遍,但我找不到以下问题的答案.

我在客户端程序中有一个C#/.NET NamedPipeClientStream实例,而一个工作线程正在调用NamedPipeClientStream.Read(byte [],int,int)来从服务器获取数据.服务器将数据更新发送到客户端.

读取是阻止呼叫.如果我想关闭客户端,有没有办法取消/退出读取呼叫?我试过在命名管道实例上调用Close,但它对调用Read的线程没有影响.

我认为有一种方法可以取消阅读电话.如果没有,似乎这是一个设计非常糟糕的API,因为你的程序受到管道的支配.

任何信息都非常感谢.

-克里斯

.net c# multithreading named-pipes

7
推荐指数
1
解决办法
2275
查看次数

并发读取和写入 NamePipeClientStream

我的应用程序中有一个 NamedPipeClientStream 实例,它设置为双工通信 (PipeDirection.InOut)。我还有两个线程,一个读取线程和一个写入线程。

我想让读取线程仅调用 NamedPipeClientStream.Read 方法,而写入线程仅调用 NamedPipeClientStream.Write 方法。他们永远不会调用彼此的方法,但他们可能会同时调用管道实例。

我查找了 NamedPipeClientStream 的文档,它说公共静态方法是线程安全的,但不能保证实例方法是线程安全的。

我的问题是,我有两个线程同时在管道实例上调用两个不同的方法(读取和写入)是否安全,或者这是我不应该做的事情?而且,实例方法线程安全仅适用于调用同一方法的单独线程,而不适用于调用单独方法(如 Read 和 Write)的单独线程吗?

谢谢!

.net c# concurrency multithreading named-pipes

4
推荐指数
1
解决办法
2887
查看次数

标签 统计

.net ×2

c# ×2

multithreading ×2

named-pipes ×2

concurrency ×1