2012-07-23 80 views
-4

DLL进程正在隔离的应用程序中运行。从第三个应用程序运行的域。 我想卸载的AppDomain卸载AppDomain

如果我使用Enviroment.Exit(),它也杀死了父亲的应用程序(应用程序,它lauches的DLL进程)

编辑

这样做,因为它既不如下:

 AppDomain domainObj = AppDomain.CurrentDomain; 
     AppDomain.Unload(domainObj); 
+1

“DLL过程”没有意义。你的意思是在另一个进程中的AppDomain?如果是这样,你是否想从其进程或其他进程中卸载该AppDomain? – Richard 2012-07-23 15:02:32

+0

Process.Stop()? – negligible 2012-07-23 15:04:33

+0

是的,我想从其流程中卸载APP。 – kmxillo 2012-07-23 15:05:17

回答

0

如果从DLL函数运行在你的过程中单独的AppDomain线程,那么你可以尝试调用AppDomain.Unload。根据文档,

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

所以,如果你无法成功卸载这个其他appdomain - 你可能不得不寻找其他的选择。

+0

您的解决方案对我无效。 – kmxillo 2012-07-23 15:19:06