窗户管道坏了

时间:2017-10-19 18:19:29

标签: c# c++ .net ipc named-pipes

目前使用管道进行流程之间的通信,一个用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);

我是否遗漏了一些显而易见的事情,导致我的管道写入被半破坏?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

PAGE_READMODE_BYTE解决了我的问题。