【发布时间】:2011-03-14 13:21:29
【问题描述】:
正如主题所说,我编写了一个 C# 类,例如 Test,然后将其编译为 DLL,并将其作为 COM 自动化服务器公开给 Excel。现在,您可以直接或通过 VBA 函数在 Excel 公式中调用该类的方法,该函数本身在后台调用它们。在第二种情况下发生的事情是相对透明的(您编写了代码!),而在第一种情况下,我假设一个 Test 实例被透明地实例化然后使用(它必须因为暴露的方法不是并且 - 从我读过的-- 不能是静态的),但确切的时间和方式尚不清楚。因此,我的问题是:在此设置中调用的自动化服务器的确切生命周期是什么?记录在哪里?
一个附属问题是,是否有办法让公式中的直接调用和通过 VBA 的调用都使用单个单例的 Test 实例?我想我已经知道如何让所有 VBA 过程使用单个 Test 实例,但即便如此,只要在公式中直接调用 Test 方法,就会创建第二个。
最后,如果 Test 类拥有类级别的资源(即静态资源),您应该何时以及如何处置它们?同样,这引出了一个问题,即 .Net/COM Interop 何时创建和销毁测试类。
精度:服务是一个 DLL,而不是应用程序,并且 Excel 应该是唯一使用它的东西,尽管可能打开了多个电子表格副本。这是 Excel 2007。
【问题讨论】: