我的问题是关于为加载/卸载dll而创建的应用程序域。 一切都始于
的需要Step-1 : load the dll
Step-2 : process that dll
Step-3 : Unload the dll
由于我们无法卸载dll,因此创建应用程序域是不可避免的,这很好。所以新的步骤是;
Step-1 : Create a new app domain
Step-2 : load the dll
Step-3 : process that dll
Step-4 : Unload the Application domain
我的问题是关于卸载部分。虽然我等了很长时间,但有时AppDomain.Unload("newDomain");
不会返回。卸载方法不返回的原因是什么?
我已阅读MSDN以获得以下解释。
当线程调用Unload时,目标域将被标记为卸载。 专用线程尝试卸载域,以及所有线程 域被中止。例如,如果线程没有中止 因为它正在执行非托管代码,或者因为它正在执行a 终于阻止,然后经过一段时间了 在最初的线程中抛出CannotUnloadAppDomainException 叫卸载。如果最终无法中止的线程 结束,目标域未卸载。因此,在.NET Framework中 版本2.0域不保证卸载,因为它可能不会 可以终止执行线程。
但我有一些问题
1)什么是"时间段"在这里解释?我可以设置它吗?
2)MSDN说.NET 2.0框架不能解决卸载问题。 .NET 4.0怎么样?
3)我确定加载的dll中没有运行线程。可能是另一个原因?
我被严重困扰,任何帮助都表示赞赏:(