一个动态加载/卸载DLL的例子
2007-07-15 16:59
281 查看
原理我就不写了,博客园里很多“大虾”都已经写过了,只说说我的步骤:
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)
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)
相关文章推荐
- 搞一个动态加载dll竟然搞了半天,郁闷。动态加载 卸载 Assembly, Appdomain。
- 一个动态创建卸载应用程序域的例子
- dojo小例子(20)动态加载的Select增加一个option空白项
- C#中使用反射动态加载和卸载DLL
- c#动态加载卸载DLL的方法
- C++中使用反射动态加载和卸载DLL
- C#中动态加载和卸载DLL
- C#中使用反射来动态加载和卸载DLL
- C#中动态加载和卸载DLL
- C#中动态加载和卸载DLL
- WinDBG技巧:在加载/卸载一个DLL 的时候下断点
- WinDBG技巧:在加载/卸载一个DLL 的时候下断点
- WinDBG技巧:在加载/卸载一个DLL 的时候下断点
- vb动态加载dll的一个类,实现vb动态加载dll并动态调用dll导出的函数的一个方便办法
- C#中动态加载和卸载DLL
- C#中动态加载和卸载DLL
- C#中动态加载和卸载DLL
- 一个通用的动态加载数据例子(IE5,NS6,Mozilla 1.3b)
- C#中使用反射来动态加载和卸载DLL
- C#动态加载卸载DLL