我有一个使用互操作的COM组件的C#类。 以下是示例代码:
public class MyClass
{
MyCOMClass myObj=null;
try
{
myObj = new MyCOMClass();
for (int num = 0; num < myArr.Length; num++)
{
//Call a method on myObj and do some processing
}
}
catch(Exception ex)
{
//log exception
}
finally
{
if (myObj != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(myObj);
}
}
}
这里,for循环运行约150次。
n在catch块中执行此代码,我得到一个异常: “无法使用已与其基础RCW分离的COM对象。”
我尝试实现IDisposable接口,然后编写Dispose方法:
public class MyClass: IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(true);
}
protected virtual void Dispose(bool diposeMgdResources)
{
if (!this.disposed)
{
if (diposeMgdResources)
{
if (myObj != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(myObj);
}
}
this.disposed = true;
}
}
}
从客户端,我然后在这个类上调用dispose,如: myClass.Dispose();
但是,我在这里仍然得到同样的例外。我错过了什么?
感谢阅读。
答案 0 :(得分:0)