卸载带有引用的应用程序域

发布于 2024-08-05 16:52:58 字数 202 浏览 5 评论 0原文

我是使用应用程序域的新手,所以我正在边学习边使用。

我正在利用应用程序域来隔离我在运行时加载的插件实例。如果我从主应用程序域引用插件对象(在其自己的应用程序域中)并且卸载该插件应用程序域,它会完全卸载吗?

我的理解是,通过从主应用程序域引用插件实例,我实际上引用了透明代理,所以我实际上并没有直接引用该对象。因此,我相信没有问题,但我想确保我的理解是正确的。

I'm new to using appdomains, so I'm learning as I go.

I'm making use of appdomains to isolate plugin instances that I'm loading at runtime. If I am referencing a plugin object (in its own appdomain) from the main appdomain and I unload that plugin appdomain, will it fully unload?

My understanding is that by referencing the plugin instance from the main appdomain, I'm actually referencing a transparent proxy, so I'm not actually directly referencing the object. Due to this, I believe there isn't an issue, but I want to make sure my understanding is correct.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

友谊不毕业 2024-08-12 16:52:58

您的理解是正确的:一个应用程序域中的对象无法真正引用另一个应用程序域中的对象,因此卸载应用程序域将真正释放该应用程序域中的所有对象(并且您的代理对象会变得过时)。

卸载仍然存在各种问题:如果当前在应用程序域中执行某些代码(例如本机代码),则卸载将失败并出现异常。因此,在尝试卸载 AppDomain 之前,您应该确保所有线程都已从 AppDomain 返回。

Your understanding is correct: objects in one appdomain cannot really reference objects in another appdomain, so unloading an appdomain will truly release all objects in that appdomain (and your proxy objects become stale).

There are still various problems with unload: if certain code is currently executing in the appdomain (e.g. native code), then Unload will fail with an exception. So you should make sure that all threads have returned out of the AppDomain before trying to unload it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文