1

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

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

4

5 回答 5

1

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

一些进一步的文章:

于 2009-12-14T13:51:43.137 回答
1

我相信您最好和最安全的选择是通过 WCF检查命名管道。直接来自 MSDN:

命名管道是 Windows 操作系统内核中的一个对象,例如进程可用于通信的共享内存部分。命名管道有一个名称,可用于单机进程之间的单向或双工通信。

于 2009-12-14T13:52:10.607 回答
0

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

于 2009-12-14T13:52:49.093 回答
0

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

如果没有特殊的技巧,您通常无法从另一个程序内存地址空间访问一个程序内存地址空间,绝对不是在 c# 中。

于 2009-12-14T13:52:55.863 回答
0

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

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

于 2009-12-14T14:08:41.287 回答