如何使我的类库STA与VBScript中的CreateObject一起使用?我想确保当我执行以下操作时(请参见下文),该过程应终止/处置。
Set MyObject = Nothing ' Dispose
这可能吗?我已经看到,当我运行上面的语句时,我的对象没有处理,我的析构函数没有被运行。请指教。
下面是我的班级的快照(标记为COM可见,并为COM Interop注册):
[Guid("")]
[ClassInterface()]
[ProgID()]
[ComVisible(true)]
public class MyClass {}
我是否需要使用其他属性对其进行标记,或者当我将其设置为COM时,是否需要为其设置另一个设置?
答案 0 :(得分:2)
这与标记您的类库STA无关。 .NET不支持确定性破坏,因此当您将引用设置为Nothing时,无法调用任何内容。
.NET最接近的构造是IDisposbale
接口,必须手动调用。如下所示:
MyObject.Dispose
Set MyObject= Nothing
注意C#对象没有解析器 - 它们有终结器。当对象被垃圾收集时运行终结器,这比不再引用对象的时间晚一些。