2009-12-14 95 views

回答

0

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

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

+0

他们在同一个域中。 你能解释一下吗? – Behrooz 2009-12-14 14:11:12

+0

我想知道如果其中一个程序集是由COM可见的,另一个使用它作为COM组件,则程序集1中的一个方法可以由程序集2调用。您可以试试看它是否有效。 – A9S6 2009-12-14 14:58:37

+0

我可以将代码指针复制到代理的_mehodptr。当DEP是desabled或我找到一个解决方案来摆脱DEP时,它真的有效。 – Behrooz 2009-12-14 16:25:53

1

你想看看WCF - 微软的统一Web服务和远程处理框架。它提供了许多用于进程间通信的选项,从基于http的XML到基于TCP/IP的二进制或命名管道。

一些进一步的文章:

+1

这是什么? 它是如何工作的? – Behrooz 2009-12-14 13:52:32

+4

@ behrooz,去链接并阅读它... – James 2009-12-14 13:53:18

1

我相信你最好的和最安全的选择将是通过WCF退房Named Pipes。直从MSDN:

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

+0

和我应该如何发送一个System.DataSet(+ 200MB)通过它? – Behrooz 2009-12-14 13:54:15

+0

我可以在管道中放200MB的内存吗? – Behrooz 2009-12-14 13:59:42

+1

如果我可以这样做==>它是一个圆柱体。 – Behrooz 2009-12-14 14:00:38

0

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

+0

这些应用程序旨在监视变化并对其进行响应。 – Behrooz 2009-12-14 13:55:14

0

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

你一般不能从另一个,而访问一个程序存储器地址空间特殊的黑客,绝对不是在C#中。

+0

是不是有什么办法可以做“特殊黑客”? – Behrooz 2009-12-14 13:58:07

相关问题