从C#中,如何在实现IStorage的返回对象上调用Release?

问题描述:

我正在读写C#中的结构化存储文件。打开文件我打电话从C#中,如何在实现IStorage的返回对象上调用Release?

IStorage StorageInterface; 

int result = StgOpenStorage(filename, null, STGM.READWRITE | STGM.SHARE_EXCLUSIVE, IntPtr.Zero, 0, out StorageInterface); 

这工作,我可以访问该文件。我相信我需要调用Storage对象上的Release()来关闭文件。但是,自从在IUnknown上实施后,我不知道如何获得Release。

我可以将StorageInterface转换为实现IUnknown的对象并以此方式调用它吗?

感谢,

约翰

+0

是否继承IDisposible?如果不是,那么只需设置Object = null,或者你可以尝试这样的测试它('((IDisposable)YourObject).Dispose();' – MethodMan

+0

它看起来像IStorage不会继承自IDisposable :( –

这是自IUnknown的。每个COM对象都派生自IUnknown。请致电

StorageInterface->Release(); 

也许我很仓促。我错过了C#部分......这就是你如何用C++来完成的。

在C#中,您应该可以像这样调用。

System.Runtime.InteropServices.Marshal.ReleaseComObject(StorageInterface); 

检查拼写...它来自内存。