如何在两个或多个程序之间共享内存中的System.Object?

时间:2009-12-14 13:48:07

标签: c# shared-objects

是否有任何库,代码示例,开源项目等帮助我在两个或多个程序之间共享对象(数据集,集合......),直接或间接访问内存。
如果没有办法,请告诉我其他方法让我的应用程序工作。

语言:c#.net
平台:vista x64

5 个答案:

答案 0 :(得分:1)

您希望查看WCF - Microsoft的整合WebServices和Remoting框架。它提供了许多进程间通信选项,从XML over http到二进制TCP / IP或命名管道。

其他一些文章:

答案 1 :(得分:1)

我相信您最好和最安全的选择是通过WCF查看Named Pipes。直接来自MSDN:

  

命名管道是一个对象   Windows操作系统内核等   作为共享内存的一部分   流程可用于通信。一个   命名管道有一个名称,可以使用   用于单向或双向通信   在一台机器上的进程之间。

答案 2 :(得分:0)

我不知道,所以我会留下别人回答。如果不可能,并且取决于两个应用程序是否需要实时了解更改,您可以将类序列化为文件(例如XML)以共享当前状态信息。

答案 3 :(得分:0)

您可以以某种方式使用文件或数据库或任何其他持久性技术,消息传递,WCF(或更低的进程间通信协议)

你通常无法在没有特殊黑客的情况下从另一个程序存储器地址空间访问,绝对不能在c#中。

答案 4 :(得分:0)

我不太确定如何可以实现这一点但是如果程序集都在同一个域中,则可能。如果其中一个程序集加载另一个程序集并为其指定第二个程序集可以调用第一个程序集的指针/引用,则可以使用参数调用第一个程序集内的方法。

在我的一个项目中,它是用C#编写的COM插件,COM dll从程序集中实例化两个不同的类,它们可以共享静态数据。