我有两个不同的Windows应用程序(两个不同的人编写代码)。一个用C ++编写,另一个用C#编写。我需要一些方法来在它们之间共享RAM中的数据。必须写入数据,而另一个只读取写入的数据。我应该用什么来使它最有效和最快速? 感谢。
答案 0 :(得分:23)
您可以使用Memory Mapped Files。
Here是一篇描述如何使用它们的文章。
答案 1 :(得分:2)
使用Windows File Mapping Object,它允许您在进程之间共享内存。
答案 2 :(得分:2)
命名管道是命名的单向或双工管道,用于管道服务器与一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道。实例的使用使多个管道客户端能够同时使用相同的命名管道。
任何进程都可以访问命名管道,但需要进行安全检查,使命名管道成为相关或不相关进程之间的一种简单通信方式。
答案 3 :(得分:0)
我建议你重新设计它,让它使用基于消息的通信。它通过自动内存管理(与共享内存相比)在.NET中更强大,更易于使用。虽然速度较慢。
答案 4 :(得分:-1)
一定是你分享的公羊吗?如果没有,您可以编写数据以从一个应用程序中说出XML文件,并使用另一个应用程序读取xml。 您必须确保一次只有一个应用程序从资源中读取。对于xml文件,您可以在名为“xml_filename.lock”的XML文件的目录中创建一个文件,如果存在,则指示另一个应用程序正在使用该XML文件。
如果此类解决方案不符合您的目的,请告诉我有关您尝试做什么的更多信息。原则上,应用程序不应与其他应用程序共享内存,以确保稳定性和安全性。