我有一个托管类,使用的COM看起来像这样。
Public Class MyClass
Private myobj as SomeComObject
Public Sub New()
myobj = CreateObject("SomeComObject.Class")
End Sub
Public Sub DoSomething()
dim innerobj as SomComObject.InnerClass
innerobj = myobj.CreateInnerClass("arg1", true, 5)
innerobj.DoSomething()
End Sub
End Class
由于我正在通过COM-Interob dll使用未经管理的dll,因此我想知道是否需要手动释放innerobj,或者如果我调用ReleaseObject(),gc是否足够聪明自动完成。
我的类实现了IDisposable,目前我正在执行以下操作:
Runtime.InteropServices.Marshal.ReleaseComObject(myobj)
我需要关心创建COM对象的所有内部对象是否需要释放?如果需要释放,释放的顺序是否重要(先释放内部对象还是先释放父对象)?