从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的对象并以此方式调用它吗?
感谢,
约翰
答
这是自IUnknown的。每个COM对象都派生自IUnknown。请致电
StorageInterface->Release();
也许我很仓促。我错过了C#部分......这就是你如何用C++来完成的。
在C#中,您应该可以像这样调用。
System.Runtime.InteropServices.Marshal.ReleaseComObject(StorageInterface);
检查拼写...它来自内存。
是否继承IDisposible?如果不是,那么只需设置Object = null,或者你可以尝试这样的测试它('((IDisposable)YourObject).Dispose();' – MethodMan
它看起来像IStorage不会继承自IDisposable :( –