-4

A DLL process is running in an isolated App. Domain which was runned from a 3rd application. I would like to unload AppDomain

If I use Enviroment.Exit(), it also kills the father application (app which lauches the DLL process)

edit

Doing as it follows neither:

        AppDomain domainObj = AppDomain.CurrentDomain;
        AppDomain.Unload(domainObj);
4

1 回答 1

0

如果 DLL 中的函数在您的进程中作为单独 AppDomain 中的线程运行,那么您可以尝试调用AppDomain.Unload。根据文件,

当线程调用 Unload 时,目标域被标记为卸载。专用线程尝试卸载域,并且域中的所有线程都被中止。如果线程没有中止,例如因为它正在执行非托管代码,或者因为它正在执行 finally 块,那么在一段时间后,在最初调用 Unload 的线程中会抛出一个 CannotUnloadAppDomainException。如果无法中止的线程最终结束,则不会卸载目标域。因此,在 .NET Framework 2.0 版中,域不能保证卸载,因为它可能无法终止正在执行的线程。

因此,如果您无法成功卸载此其他 appdomain - 您可能需要寻找其他替代方案。

于 2012-07-23T15:04:22.497 回答