我试图卸载应用程序域,但我的应用程序停止工作

Posted

技术标签:

【中文标题】我试图卸载应用程序域,但我的应用程序停止工作【英文标题】:I tried to unload an Application domain but my application stopped working 【发布时间】:2017-07-24 19:29:54 【问题描述】:

我创建了一个新的应用程序域并将我的程序集加载到其中。

Assembly assembly = dom.Load("bookOne");

一切都很顺利。该应用程序使用了资源字典等,但是当我尝试使用此代码卸载 dll 以释放内存时,我的应用程序关闭时没有任何错误或警告:

try

    AppDomain.Unload(dom);

catch (CannotUnloadAppDomainException)

    Console.WriteLine("Book Unloaded!" + " 4");
    AppDomain.Unload(dom);
    GC.Collect();

突然退出后输出窗口显示这些:

“System.AppDomainUnloadedException”类型的第一次机会异常 发生在 mscorlib.dll 类型的第一次机会异常 'System.AppDomainUnloadedException' 发生在 mscorlib.dll 中 线程“vshost.RunParkingWindow”(0x1df8)已退出,代码为 0 (0x0)。线程 '' (0xfcc) 已退出,代码为 0 (0x0)。

【问题讨论】:

您的意思是应用程序关闭没有错误或警告。您在事件日志中收到什么错误或警告?您能否捕获异常并记录它以了解您无法卸载的原因。而不是再次卸载。在您的 ctach 块中 抱歉,已将输出窗口日志添加到问题中。 【参考方案1】:

“System.AppDomainUnloadedException”类型的第一次机会异常 发生在 mscorlib.dll 中

如果您收到 AppDomainUnloadedException ,那么您可以忽略它,因为 AppDomainUnloadedException 在卸载应用程序域时抛出,这就是您想要的。

来自msdn

尝试访问 卸载的应用程序域

【讨论】:

这是那些无异常的异常之一,例如 ThreadInterruptedException 等。

以上是关于我试图卸载应用程序域,但我的应用程序停止工作的主要内容,如果未能解决你的问题,请参考以下文章

AdMob Ads会不时在发布应用中停止工作

我的应用程序域无法卸载

我如何才能等到我的 Android 应用程序中的协程作用域执行完成?

默认应用程序域的卸载事件?

如何查找 Windows 窗体应用程序的产品代码?

在设备上卸载应用程序后,颤动运行不起作用