我用Assembly a = Assembly.LoadFrom(filename);方法加载的dll文件如何在不关闭程序的情况下将其卸载,即实现热插拔的功能,如今热加载我会了,就是卸载不会,求救了,谢谢!
解决方案 »
- winform 客户端删除和添加一个txt文件
- C#有没有类似C里面的函数malloc()呢?
- winform
- C# 100分问: 调用远程webService 的问题
- Object reference not set to an instance of an object.
- 启动线程查询数据库,如果有数据,发送到你的应用处理程序这个怎么写?
- 获得域或工作组的名称
- 各位高手帮我看看问题出在哪呀?
- 请问在不同服务器上 相同域名的程序 是否可以共享cookie
- 大家帮忙看看,怎么解决?
- 求把 datagrid 的数据读回 dataset !
- .net生成的 exe如何让没装.net的人运行啊。。。求教
不过可以通过卸载应用程序域的方法达到目的。
你可以先通过AppDomain.CreateDomain(),创建一个应用程序域
然后在这个域内加载程序集,需要的时候通过AppDomain.UnLoad()来卸载应用程序域,达到卸载程序集的目的。
应用程序域——由 AppDomain 对象来表示,为执行托管代码提供隔离、卸载和安全边界。多个应用程序域可以在一个进程中运行;但是,在应用程序域和线程之间没有一对一的关联。多个线程可以属于一个应用程序域,尽管给定的线程并不局限于一个应用程序域,但在任何给定时间,线程都在一个应用程序域中执行。应用程序域通过使用 CreateDomain 方法来创建。AppDomain 实例用于加载和执行程序集 (Assembly)。当不再使用 AppDomain 时,可以将它卸载。AppDomain 类实现一组事件,这些事件使应用程序可以在加载程序集、卸载应用程序域或引发未处理的异常时进行响应。