C#4.0 COM类库

时间:2012-06-16 17:08:35

标签: c# class com

如何使我的类库STA与VBScript中的CreateObject一起使用?我想确保当我执行以下操作时(请参见下文),该过程应终止/处置。

Set MyObject = Nothing ' Dispose

这可能吗?我已经看到,当我运行上面的语句时,我的对象没有处理,我的析构函数没有被运行。请指教。

下面是我的班级的快照(标记为COM可见,并为COM Interop注册):

[Guid("")]
[ClassInterface()]
[ProgID()]
[ComVisible(true)]
public class MyClass {}

我是否需要使用其他属性对其进行标记,或者当我将其设置为COM时,是否需要为其设置另一个设置?

1 个答案:

答案 0 :(得分:2)

这与标记您的类库STA无关。 .NET不支持确定性破坏,因此当您将引用设置为Nothing时,无法调用任何内容。

.NET最接近的构造是IDisposbale接口,必须手动调用。如下所示:

MyObject.Dispose
Set MyObject= Nothing

注意C#对象没有解析器 - 它们有终结器。当对象被垃圾收集时运行终结器,这比不再引用对象的时间晚一些。