gpt4 book ai didi

c# - 关闭 AppDomain 及其创建的所有 AppDomain

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:54 27 4
gpt4 key购买 nike

我想在应用程序域内运行第三方库(在本例中为 XSP),这样我就可以关闭它或以其他方式控制它的行为。

基本流程:

var child = AppDomain.CreateDomain(...) 
...
AppDomain.Unload(child)

当子应用程序域自己创建应用程序域时不起作用。当我关闭“child”时,它创建的任何应用程序域仍然存在。

我希望能够说“卸载这个和里面的所有东西”,或者检测应用域何时创建新的应用域,这样我就可以将它添加到要清理的事物列表中。

是否有 API 支持这两种方法?

有没有另一种方法可以在不产生操作系统进程的情况下实现同样的事情?

最佳答案

还没有尝试过,但如果你至少是 2.0,你应该能够配置一个替代品 AppDomainManager , 覆盖它的 CreateDomain()方法,并通过静态 AppDomain.CurrentDomain 的值跟踪 AppDomain 之间的父子关系CreateDomain() 调用中的属性。一旦你掌握了 parent 和 child 的踪迹,你就可以强制他们 unloading .

但是,这很粗鲁,可能会使您的流程不稳定,具体取决于您的第三方库的目的。进程是一种更昂贵但也更可靠的包装第三方代码的方式。

关于c# - 关闭 AppDomain 及其创建的所有 AppDomain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com