Interop.Domino DLL线程安全吗?

时间:2009-12-01 06:32:21

标签: c#-2.0 lotus-notes lotus-domino interop-domino

我在c#应用程序中使用Interop.Domino dll 1.2版,并通过为每个创建的线程创建新会话(一次最多5个线程),使用多线程同时访问多个NSF文件。

对于大型NSF文件,我收到了内存段溢出等Notes错误。  为了解决这个问题,我使用了Marshal.ReleaseComObject(object)来尽可能地释放必要的Notes文档和NotesView对象。

现在,问题就像是,我能够访问2个NSF文件,但其余的线程都在dll异常中,因为很少有Notes对象变为空。

请给我一些帮助......

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我最近在这个同样的问题上做了一些实验。

我编写了一个测试程序,它启动了两种不同类型的线程。每个线程配置为与8到10个用户一起使用。每个线程都必须读取Domino目录以便为用户找到邮件文件,并且每个线程还将结果文档写入单个公共NSF文件。但是对于邮件文件中的主要工作,没有两个线程访问相同的NSF。 NSF文件分布在两台服务器上。其中五个线程正在使用NotesDatabase.Search,其中五个线程正在读取NotesView并向下钻取到NotesViewEntry对象。我遇到了你遇到的相同内存问题,并以同样的方式解决了它 - 但我非常小心不要发布Domino目录或输出NSF的数据库对象。我用最多10个活动线程运行这个测试代码,没有任何问题。

这是令人鼓舞的,但我认为这并不足以证明Domino COM对象完全是线程安全的。