C# 卸载AppDomain

C# 卸载AppDomain,c#,process,appdomain,C#,Process,Appdomain,DLL进程正在独立应用程序中运行。从第三个应用程序运行的域。 我想卸载AppDomain 如果我使用environment.Exit(),它还会终止父应用程序(启动DLL进程的应用程序) 编辑 按如下方式做: AppDomain domainObj = AppDomain.CurrentDomain; AppDomain.Unload(domainObj); 如果DLL中的函数作为线程在进程中的单独AppDomain中运行,则可以尝试调用。根据文件, 当线程调用

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

如果我使用environment.Exit(),它还会终止父应用程序(启动DLL进程的应用程序)

编辑

按如下方式做:

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

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

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


因此,如果您无法成功卸载此其他appdomain,您可能必须找到其他替代方法。

“DLL进程”没有意义。您是指另一进程中的AppDomain吗?如果是,您想从其进程内还是从另一个进程中卸载该AppDomain?是的,我想从其进程内卸载该应用程序。请解释您所说的“dll进程”是什么意思,因为它没有太多意义,这也是我否决此问题的原因。我不知道如何描述它,这就是我打电话的原因“dll进程”。我想停止一个应用程序域,但我不知道怎么做。我想我必须按照其他用户所说的那样做。AppDomain.Unload。但是我如何才能获得该AppDomain?如何启动此“dll进程”