VSTO:操纵COM对象("一点好,两点坏")

COG*_*COG 3 c# com excel vba vsto

来自Excel VBA背景我会经常编写如下代码:

Range("myRange").Offset(0, 1).Resize(1, ccData).EntireColumn.Delete
Run Code Online (Sandbox Code Playgroud)

我现在正在转向VSTO,并且已经阅读了RCW计数器等,并且需要显式释放COM对象.基本建议似乎是:不要将引用链接到Excel对象(如上所述) - 因此"一点好,两点坏".我的问题是,我是否正确上述代码不是VSTO的方式?如果是这样,这是否意味着我需要明确声明上述链中隐含的3个范围(Offset,Resize&EntireColumn)?

或者甚至是这样的:

rng.Columns.Count
Run Code Online (Sandbox Code Playgroud)

其中rng是声明的范围?我应该为rng.Columns分配一个名称,以获得该范围内的列数吗?

Han*_*ant 7

"双点规则"愚蠢背后存在非常有害的货物崇拜,它完全无法使C#程序员免于从第4版开始出现问题.并且它比使Office程序按需退出的简单方法更加痛苦.

但是,这是不是你有问题,在所有的货物邪教仅适用于使用自动化激活Office程序的进程外的程序.你的代码实际上是 Office程序中运行的,当然你不关心程序何时终止.因为这也会终止你的代码.

只需按照编写常规C#代码的方式编写代码,GC就不需要任何帮助.

  • "Marshal.ReleaseComObject"和"两点"误解已完全失控.请继续传播该消息:.NET GC可以正常使用COM. (3认同)