gpt4 book ai didi

c# - 在 Visual Studio 中解决 DisconnectedContext

转载 作者:可可西里 更新时间:2023-11-01 08:09:51 24 4
gpt4 key购买 nike

当我使用 Visual Studio 运行我的应用程序时,我总是得到一个 DisconnectedContext(托管调试助手)。鉴于谷歌和文档,当从其他线程调用 STA 上的 COM 对象时,可能会发生这种情况。

但是,当弹出窗口出现时我查看所有线程时,我没有找到这样的东西。 (而且我根本没有发现任何奇怪的地方)。

关于如何找到引发 DisconnectedContext 的方式的一些想法?

最佳答案

在寻找相同答案时发现了这个,以为我会添加评论...

在任何通过进程内互操作(在 transient 线程上)使用 CLR 对象的多线程应用程序中,此错误几乎是不可避免的。问题是 CLR 对对象进行了不确定的清理(可能是 RCW,对底层 COM 对象具有线程亲和性)。您无法告诉运行时清理在线程上创建的对象(至少在不在线程上创建另一个非确定性清理句柄的情况下);这是互操作机制的设计限制。鉴于此,没有任何方法可以安全地退出已创建任何 CLR 对象的线程而不可能出现此错误。

最佳建议:如果可以,请不要使用 CLR/interop。下一个最佳建议:使用 COM+ 来处理隔离你的互操作,这样 CLR 就可以存在于一个永远不会终止线程的进程中(使用持久线程池或等效的)。下一个最佳建议:和我一起继续向 Microsoft 介绍他们的互操作的这个设计级问题,并希望他们解决它。

关于c# - 在 Visual Studio 中解决 DisconnectedContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860836/

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