2008-11-08 13 views
4

저는 C# (StgCreateDocfile)의 IStorage 복합 파일 구현을 사용하고 있습니다.IStorage의 복합 파일 구현은 스레드로부터 안전한가요?

읽기 및 쓰기를 동기화 한 경우 다중 스레드에서 하나의 IStorage/IStream 인스턴스에 안전하게 액세스 할 수 있습니까? 아니면 여기에 문제가 될 수있는 COM 문제가 있습니까?

예를 들어, 동시에 저장소에서 모든 스트림을 가져오고 다른 스레드에서 새 스트림을 만들고 쓰는 동안 안전하게 EnumElements를 호출 할 수 있습니까?

필자는 이미 구현에 대한 스트레스 테스트를 작성했지만 아무런 문제가 없었지만 100 % 확신해야합니다. MSDN 문서에서이 정보를 찾지 못했습니다.

답변

1

터프 하나. ILockBytes 인터페이스에 대한 문서에는 이에 대한 스 니펫이 있습니다. 그것은 IStorage와 IStream의 기본 구현이 IMarshal을 구현한다고 말합니다. COM 스레딩 규칙을 따르면, 스레드로부터 안전합니다. 인터페이스 포인터가 in-proc 인 경우를 쉽게 잊을 수 있습니다. CoMarshalInterThreadInterfaceInStream() 또는 IGlobalInterfaceTable과 같은 것을 사용해야합니다. 자신을 잠그면 마샬링을하지 않아도됩니다.