2016-10-17 1 views
0

C#에서 Structured Storage 파일을 읽고 쓰고 있습니다. 파일을 열려면C#에서 IStorage를 구현 한 반환 된 객체에서 Release를 어떻게 호출합니까?

IStorage StorageInterface; 

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

이것은 작동하며 파일에 액세스 할 수 있습니다. 나는 파일을 닫으려면 Storage 객체에서 Release()를 호출해야한다고 생각한다. 그러나 IUnknown에 구현 된 이후 릴리스 방법을 모릅니다.

IUnknown을 구현하는 객체에 StorageInterface를 캐스팅하고 그런 방식으로 호출 할 수 있습니까?

감사

+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); 

맞춤법을 확인하십시오. 메모리에 있습니다.

관련 문제