2009-12-01 4 views
3

나는 C# 응용 프로그램에서 Interop.Domino dll 버전 1.2를 사용하고 동시에 생성 된 각 스레드 (최대 5 개의 스레드)마다 새 세션을 작성하여 다중 NSF 파일에 동시에 액세스하기 위해 다중 스레드를 사용합니다.Interop.Domino dll은 안전합니까?

큰 NSF 파일의 경우 메모리 세그먼트 오버플로와 같은 Notes 오류가 발생했습니다. 이 문제를 극복하기 위해 Marshal.ReleaseComObject (개체)를 사용하여 필요한 NotesDocument 및 가능한 NotesView 개체를 릴리스했습니다.

이제 문제는 2 개의 NSF 파일에 액세스 할 수 있지만 나머지 Notes 스레드는 null이되지 않아 dll 예외가 발생합니다.

친절하게 나에게 도움이 .... 도움을

감사를 제공합니다.

답변

2

저는 최근 이와 비슷한 질문에 대해 몇 차례 실험을 해왔습니다.

두 가지 유형의 스레드를 시작하는 테스트 프로그램을 작성했습니다. 각 스레드는 8 ~ 10 명의 사용자와 작업하도록 구성됩니다. 모든 스레드는 사용자의 메일 파일을 찾기 위해 Domino 디렉토리를 읽어야하며 각 스레드는 결과 문서를 하나의 공통 NSF 파일에 기록합니다. 그러나 메일 파일의 주요 작업의 경우 두 개의 스레드가 동일한 NSF에 액세스하지 않습니다. NSF 파일은 두 대의 서버에 분산되어 있습니다. 5 개의 스레드가 NotesDatabase.Search를 사용하고 있고 5 개의 스레드가 NotesView를 읽고 NotesViewEntry 개체를 드릴 다운합니다. 내가 만난 동일한 메모리 문제가 발생하여 같은 방식으로 해결되었지만 Domino 디렉토리 또는 출력 NSF에 대한 데이터베이스 객체를 해제하지 않도록 매우 조심했습니다. 문제없이 최대 10 개의 활성 스레드로이 테스트 코드를 실행했습니다.

이것은 고무적이지만, 이것이 Domino COM 객체가 완전히 스레드 안전하다는 증거가 될 것이라고는 생각하지 않습니다.

관련 문제