2016-10-17 58 views
0

我正在讀寫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 :( –

回答

2

這是自IUnknown的。每個COM對象都派生自IUnknown。請致電

StorageInterface->Release(); 

也許我很倉促。我錯過了C#部分......這就是你如何用C++來完成的。

在C#中,您應該可以像這樣調用。

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

檢查拼寫...它來自內存。

相關問題