2009-12-01 112 views
3

我在c#應用程序中使用Interop.Domino dll版本1.2,並通過爲每個創建的線程(一次最多5個線程)創建新會話,同時使用多線程來訪問多個NSF文件。Interop.Domino dll線程安全嗎?

對於大型的NSF文件,我得到了像內存段溢出一樣的Notes錯誤。 爲了解決這個問題,我使用了Marshal.ReleaseComObject(object)來釋放必要的Notesdocument和NotesView對象。

現在,問題是,我能夠訪問2 NSF文件,但其餘線程進入DLL例外,因爲很少的Notes對象變爲空。

請提供一些幫助....

感謝您的幫助。

回答

2

最近我對這個問題做了一些實驗。

我寫了一個測試程序,啓動兩種不同類型的線程。每個線程都配置爲與8到10個用戶一起工作。每個線程都必須讀取Domino目錄才能找到用戶的郵件文件,並且每個線程還會將結果文檔寫入一個常見的NSF文件。但是對於郵件文件中的主要工作,沒有兩個線程訪問同一個NSF。 NSF文件分佈在兩臺服務器上。其中五個線程正在使用NotesDatabase.Search,其中五個線程正在讀取NotesView並向下鑽取到NotesViewEntry對象。我碰到了遇到的同樣的內存問題,並以相同的方式解決了這個問題 - 但我非常小心,不要釋放Domino目錄或輸出NSF的數據庫對象。我用最多10個活動線程運行這個測試代碼,沒有問題。

這是令人鼓舞的,但我認爲這不足以證明Domino COM對象完全是線程安全的。