C#命名管道的通信速度有关问题
C#命名管道的通信速度问题
现在用c++写了一个服务器,服务器将数据发给C#写的客户端,然后客户端通过命名管道将数据发送给一个用C++写的实时显示的界面。
理想条件下,发送过来的数据应当是实时显示的,然而现在检测的结果是延时15~30秒。请问各位大神究竟是什么原因 呢。
实时显示的界面中就是将调用了自己编写的一个动态链接库的函数,将数据插到一条曲线上。
以下是建立管道的代码
private void 开始数据显示ToolStripMenuItem1_Click(object sender, EventArgs e)
{
m_HPipe = (IntPtr)NamedPipeNative.INVALID_HANDLE_VALUE;
m_HPipe = NamedPipeNative.CreateNamedPipe(m_PipeName,
NamedPipeNative.PIPE_ACCESS_DUPLEX, // 数据双工通信
NamedPipeNative.PIPE_TYPE_MESSAGE | NamedPipeNative.PIPE_WAIT, 1, // 最大实例个数
128, // 流出数据缓冲大小
128, // 流入数据缓冲大小
100, // 超时,毫秒
IntPtr.Zero // 安全信息
);
if (m_HPipe.ToInt32() == NamedPipeNative.INVALID_HANDLE_VALUE)
{
MessageBox.Show("创建命名管道失败");
return;
}
MessageBox.Show("创建命名管道完毕");
Thread hThread = new Thread(new ThreadStart(PipeProcess));
hThread.IsBackground = true;
hThread.Start();
建立管道的输入输出缓冲区的大小和他的通信效率有关嘛?还请大神们回复啊
------解决方案--------------------
this.m_Pipe = new NamedPipeClientStream(".", _PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
lastPipeStream = new NamedPipeServerStream(_PipeName, PipeDirection.InOut, maxNumberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
这两个怎么没有你所说的那些
现在用c++写了一个服务器,服务器将数据发给C#写的客户端,然后客户端通过命名管道将数据发送给一个用C++写的实时显示的界面。
理想条件下,发送过来的数据应当是实时显示的,然而现在检测的结果是延时15~30秒。请问各位大神究竟是什么原因 呢。
实时显示的界面中就是将调用了自己编写的一个动态链接库的函数,将数据插到一条曲线上。
以下是建立管道的代码
private void 开始数据显示ToolStripMenuItem1_Click(object sender, EventArgs e)
{
m_HPipe = (IntPtr)NamedPipeNative.INVALID_HANDLE_VALUE;
m_HPipe = NamedPipeNative.CreateNamedPipe(m_PipeName,
NamedPipeNative.PIPE_ACCESS_DUPLEX, // 数据双工通信
NamedPipeNative.PIPE_TYPE_MESSAGE | NamedPipeNative.PIPE_WAIT, 1, // 最大实例个数
128, // 流出数据缓冲大小
128, // 流入数据缓冲大小
100, // 超时,毫秒
IntPtr.Zero // 安全信息
);
if (m_HPipe.ToInt32() == NamedPipeNative.INVALID_HANDLE_VALUE)
{
MessageBox.Show("创建命名管道失败");
return;
}
MessageBox.Show("创建命名管道完毕");
Thread hThread = new Thread(new ThreadStart(PipeProcess));
hThread.IsBackground = true;
hThread.Start();
建立管道的输入输出缓冲区的大小和他的通信效率有关嘛?还请大神们回复啊
------解决方案--------------------
this.m_Pipe = new NamedPipeClientStream(".", _PipeName, PipeDirection.InOut, PipeOptions.Asynchronous);
lastPipeStream = new NamedPipeServerStream(_PipeName, PipeDirection.InOut, maxNumberOfServerInstances, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);
这两个怎么没有你所说的那些