目前使用管道进行流程之间的通信,一个用C ++,另一个用C#.NET应用程序。我的.NET应用程序通过管道向我的C ++应用程序发送一个用户输入的长lua脚本。但是在发送时,我的脚本全部乱了。脚本的块位于不同的位置。当我用1个ReadFile调用读取整个脚本时,这很奇怪。
我的C#方:
private void button1_Click(object sender, EventArgs e)
{
if (!connected)
return;
using (var pipe = new NamedPipeClientStream(".", "TestPipe", PipeDirection.Out))
using (var stream = new StreamWriter(pipe))
{
pipe.Connect();
stream.Write(TextBox.Text);
pipe.Flush();
}
}
我不会从管道中读取我的整个C ++代码,但这是我定义管道:
HANDLE Pipe = CreateNamedPipe("\\\\.\\pipe\\TestPipe",
PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE |PIPE_READMODE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
999999,
999999,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
我是否遗漏了一些显而易见的事情,导致我的管道写入被半破坏?
非常感谢任何帮助!
答案 0 :(得分:0)
PAGE_READMODE_BYTE解决了我的问题。