c# - window 管道故障

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

目前正在使用管道在进程之间进行通信,一个使用 C++,另一个使用 C# .NET 应用程序。我的 .NET 应用程序通过管道将用户输入的长 lua 脚本发送到我的 C++ 应用程序。但是发送时,我的脚本全乱了。脚本 block 位于不同的位置。这很奇怪,因为我通过 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);

我是否遗漏了一些明显的东西导致写入我的管道变得半损坏?

非常感谢任何帮助!

最佳答案

PAGE_READMODE_BYTE 解决了我的问题。

关于c# - window 管道故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836429/

相关文章:

c++ - Windows 中的 Qt Designer 以及 Qt Creator

c# - ACRA 类似于 C# .NET 的崩溃报告库

c# - PostSharp:将建议应用于外部类型

c# - 如果我将对事件对象的引用复制到另一个对象并随后更改事件对象会怎样?

c# - 使用 LIKE 关键字在 SQL 中搜索数据

c# - XPath - 返回子节点但不返回后代

c# - 如何生成有效的数独板? [和难度等级]

c++ - 临时转换输入防弹?

java - android ndk递归扫描sd卡

c# - NopCommerce Nop.Core 冲突 DLL 问题