将隔离的 dll 加载到现有的 Appdomain 并自动执行事件

Posted

技术标签:

【中文标题】将隔离的 dll 加载到现有的 Appdomain 并自动执行事件【英文标题】:Loading an Isolated dll into existing Appdomain and autoexecuting events 【发布时间】:2010-05-05 11:07:22 【问题描述】:

我有一个正在运行三个项目的解决方案。我的项目之一是与其他两个类隔离的类库。现在我要做的是将它加载到现有的 appdomain 中,并在同一域中其他程序集发生的某些事件上自动执行其方法。

里面有一个事件,我想执行那个事件

有可能吗?我没有办法自动执行。谷歌搜索时我发现了 AppDomain.CreateInstance () 但无法充分利用它。

捕获 APPDOMAIN 中发生的事件的方法。由于我在域中加载了我的 dll,所以如何捕获域内发生的事件。

【问题讨论】:

【参考方案1】:

这相当简单,这应该可以帮助您: http://msdn.microsoft.com/en-us/library/ms173139(VS.80).aspx

基本上你需要创建一个继承自 MarshalByRefObject 的对象,然后将它的一个实例传递给父 Appdomain。现在,您的 appdomain 中运行了一个对象,您可以对其进行操作,无论是附加或引发事件、调用方法等等。

【讨论】:

以上是关于将隔离的 dll 加载到现有的 Appdomain 并自动执行事件的主要内容,如果未能解决你的问题,请参考以下文章

AppDomain 隔离问题

将 DLL 加载到单独的 AppDomain

使用 AppDomain 将 DLL 作为嵌入式资源文件加载

使用 AppDomain.Load 将 DLL 文件加载到新创建的应用程序域中。

C# AppDomain 无法加载 DLL

将程序集加载到子 AppDomain 并释放 dll 文件