从无人管理的 C++ 发送大量数据托管 C# 的应用程序

发布于 2024-11-27 20:05:12 字数 352 浏览 1 评论 0原文

我们有两个应用程序,一个本机 C++ 应用程序和一个托管 C#/WPF UI,用于创建输入、执行和操作。读取本机应用程序生成的输出。目前,两者之间的通信是通过 XML 和 XML 来完成的。纯txt文件。

然而,输出数据量相当大&我们正在寻找更好的方法来解决这个问题。使用 Memorystream 之类的解决方案将是理想的,因为可以轻松地将输出生成从文件流切换到内存流。

然而,如何弥合托管和托管之间的差距?不受管理?做到这一点最有效的方法是什么?

注意:与此相关的许多问题都与从托管 dll 到非托管 dll 的函数调用有关。这是两个独立运行的独立应用程序。 UI 生成本机应用程序,这是两者之间的唯一链接。

谢谢

we have two applications, a native C++ application and a managed C#/WPF UI that creates input for, executes & reads output generated by the native application. Currently, communication between the two is done with XML & plain txt files.

However, the amount of output data is quite large & we are looking for a better approach to this. A solution that uses something like Memorystream would be ideal because it would easy to switch the output generation from a filestream to a memorystream.

However, how does one bridge the gap between managed & unmanaged? What is the most efficient way to do this?

Note: Many of the questions related to this are about a function call from a managed to an unmaged dll. These are two separate applications running independently. The UI spawns the native application, this is the only link between the two.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哥,最终变帅啦 2024-12-04 20:05:12

这取决于您生成/使用

  • 名为管道或套接字的数据的方式 - 恒定的数据流
  • 共享内存 - 连续更新的数据

it depends on the way you produce/consume data

  • named pipes or socket - constant stream of data
  • shared memory - continuous updated data
怀中猫帐中妖 2024-12-04 20:05:12

为什么不使用标准输入/输出?您的 C++ 程序可以使用普通的“printf”或“cout”命令写入标准输出。

然后,您的 .NET 应用程序可以使用 http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx" rel="nofollow">http://例如,/msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx。标准输入也是如此:使用 stdin 将命令发送到 C++ 程序。

使用命名管道很好,如果您需要两个以上的流,这可能是答案。但在 C++ 端可能需要做更多的工作。

Why not use standard input/output? Your C++ program can write to stdout using normal "printf" or "cout" commands.

Your .NET app can then capture this data using http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx, for example. Same goes for standard input: use stdin to send commands to the C++ program.

Using named pipes is nice and might be the answer if you need more than two streams. But it would probably be more work on the C++ end of things.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文