卸载Application Domain不会返回?

时间:2014-09-03 18:44:28

标签: appdomain

我的问题是关于为加载/卸载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中没有运行线程。可能是另一个原因?

我被严重困扰,任何帮助都表示赞赏:(

0 个答案:

没有答案