一个动态加载/卸载DLL的例子

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

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)
posted @ 2007-07-15 16:59  AndyHai  阅读(993)  评论(4编辑  收藏
QQ: 2369537