首页 新闻 搜索 专区 学院

关于C#命名管道的问题。

0
悬赏园豆:20 [已关闭问题] 关闭于 2014-04-24 22:16

假设我要使用命名管道跨进程通信。那么我的服务端进程是否要写一个死循环,等待客户端连接?像这样。

var namedPipeServerStream = new NamedPipeServerStream("SagoNamedPipeServer", PipeDirection.InOut, 1, PipeTransmissionMode.Byte);
            while (true)
            {
                namedPipeServerStream.WaitForConnection();
                namedPipeServerStream.Write(null, 0, 0);
            }

然后客户端写一个死循环。不断的连接服务端,等待服务端写入数据?像这样

      while (true)
            {
                var namedPipeClientStream = new NamedPipeClientStream(".", "SagoNamedPipeServer", PipeDirection.InOut,
               PipeOptions.Asynchronous);
                namedPipeClientStream.Connect();
                namedPipeClientStream.Read(null, 0, 0);
                namedPipeClientStream.Close();
            }

感觉这样不就是长连接了吗?感觉不是很好啊。还是我用得不对。这样如果服务端和客户端都要写要读,就比较麻烦了。我期望是不用写While死循环的。类似于事件机制的。当服务端监听到管道中有消息,那么就会触发一个事件。当客户端监听管道中有消息,也会触发一个事件。求高人讲解。IIS是怎么利用命名管道跨进程通信的。代码是我这么写的吗?感觉写死循环像屎一样搓。

Sago的主页 Sago | 初学一级 | 园豆:48
提问于:2014-04-22 23:49
< >
分享
所有回答(1)
0

服务端单开一个线程轮询有没有新的连接

【秦时明月】 | 园豆:851 (小虾三级) | 2014-04-23 09:25

但是在这个线程里,还是要写死循环。还是感觉很挫。用Task也行。细一想,难不成事件机制,也是这个原理?单独一个线程去监视。已有更改,就通知主线程?不会这么搓吧。事件机制不是应该高大上吗?

支持(0) 反对(0) Sago | 园豆:48 (初学一级) | 2014-04-23 09:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册