1
1
您的静态变量肯定不会在AppDomain之间共享,因此考虑到不同的AppDomain,您看到的是预期的。 我想它是这样工作的: vsto外接程序在其自己的appdomain中运行。如果缓存对象(或RTD服务器)的COM类工厂是从该AppDomain中创建的,则它将加载到调用的AppDomain中。对该COM类的后续访问将发现它已加载到进程中,并使用现有实例。 但是,如果第一次激活是由Excel本身触发的,例如由RTD调用触发的,则.NET实现的COM对象将加载到进程的默认AppDomain中。除非生成非托管填充程序,否则无法控制加载过程的这一部分,因为在加载发生时“your code”不会运行。 我的一些建议:
我希望这能给你一些建议。 --政府 |
2
-2
首先,您可能希望将实例声明为:
通过这种方式(不是唯一一个确定的方法),您知道\u实例是线程安全生成的。关于线程安全单例的主题有很多报道,但这似乎是最简单的解决方案之一。 第二件事可能是你想尝试使用的结构是
读和写。这将使您的读写免受不同线程的影响。 最后,但这纯粹是猜测,您可以尝试为驻留在STA中的COM调用创建一个单独的对象,并访问您的库。 祝你好运! |
Emopusta · 从后端到前端的图像路径不工作 2 年前 |
Asdrubal Hernandez · Linq查询特定数组索引出错 2 年前 |
Niyazi Babayev · 如何在表达式中动态应用表达式? 2 年前 |
Dansih · .Net核心自定义身份验证方案 2 年前 |
lolorekkk · 面板插入。NET WinForm 2 年前 |