惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
H
Help Net Security
量子位
The Cloudflare Blog
博客园 - Franky
博客园 - 聂微东
博客园 - 司徒正美
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
罗磊的独立博客
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
MongoDB | Blog
MongoDB | Blog

博客园 - AndyHai

用C#实现的黑客帝国中的字符雨特效 谁动了我的构造函数? 一个PCM音频转换与混音的示例 关心则乱 让ASPX和ASMX脱离IIS运行的例子(ASP.NET宿主程序) SQL 中如何对纪录进行拆分 带有空值提示的TextBox NAT类型检测方法(转载) 在.NET中探测U盘的插入/拔出 用WebService实现中国移动的Provision反向接口 用ASP.NET调用Tuxedo Tuxedo 搞定! 用Multi-Media Library实现的波形音频录制与播放 用Multi-Media Library制作流式音频播放器 研究如何用Multi-Media Library播放波形数据 又多一道面试题 面试 RTP协议
一个动态加载/卸载DLL的例子
AndyHai · 2007-07-15 · via 博客园 - AndyHai

原理我就不写了,博客园里很多“大虾”都已经写过了,只说说我的步骤:

1、创建一个新的AppDomain,SubDomain

2、将RemoteLoader(程序集载入器)载入到SubDomain中,并创建RemoteLoader的实例Loader,Loader在SubDomain中创建

3、用Loader.Load方法载入动态程序集Library.DLL,并返回想要得到的对象实例 ca,当然,这个实例也是在SubDomain中创建的(Load方法是泛型方法)

4、给ca的Events属性创建一个EventObj实例,实际上,这个实例在主应用程序域中(这是我用来处理跨AppDomain事件的关键之处)

5、可以使用ca操作了,所有的调用将在SubDomain中执行

6、卸载掉SubDomain后,Library.DLL可以被删除(我发现,Library.DLL不可以和主应用程序放在同一个目录下,否则即使AppDomain被卸载,还是无法被删除,难道是.NET的BUG?)

源码下载(For VS.NET 2005)