在MDI应用程序中,打开DLL所在的窗体,然后将使用DLL的窗体关闭,
但是将新版本的DLL复制到当前的应用程序目录时,提示当前的文件已在
另外一个文件中打开,但是实际上已将其窗体关闭, 为什么 还会有这样
的提示>请问下,有没有办法实现在不关闭主窗体的情况下,只更新
子窗体用到的DLL
用LoadLibrary来加载你的DLL,不用时用 FreeLibrary 卸载,这个时候你就可以复制新的DLL了。
这非常简单,.NET的程序集一旦加载了,则无法卸载,除非卸载整个AppDomain。关闭了窗体之后,只是这个实例被释放,但这个窗体的类型还是在内存中加载着。
要这么干的话,主窗体和子窗体需要在不同的AppDomain,就好比是进程一样。
直接将dll转化为文件流,放在内存中,从内存中加载dll文件,反射生成界面。