1

我正在使用 Interop.Domino 处理 .NSF 文件。为了生成 html mime 实体,我使用了 nnote,但在某些情况下它无法生成它,所以在这种情况下,我将 RTFTEXT / PLIAN TEXT 作为输出。所以我使用了 CreateMIMEEntity。

NotesMIMEEntity MIMEBody = NoteDocument.CreateMIMEEntity("Body");

它可以工作,但它拥有对数据库(.nsf 文件)的控制权,文件被标记为正在另一个进程中使用。通过故障排除,很明显上述语句拥有控制权。我已经释放了所有分配给它的 Note 对象。问题仍然存在。是否有正确的方法来使用或释放​​它?

4

1 回答 1

0

COM 类下的 Notes 核心 DLL 使数据库在缓存中保持打开状态。我知道关闭它们的唯一方法是终止加载 DLL 的进程。一种选择是使用 COM API 设计代码,以便调度短期工作进程来打开数据库、完成工作并终止。是的,它又丑又慢,但是如果您需要一个长时间运行的服务并且您使用的是 COM API 而不是 Notes C API,那么这是最好的方法。

在任何情况下,如果您通过 Domino 服务器打开数据库,缓存的打开数据库不应导致共享冲突。但是,如果您在打开数据库时使用“”而不是服务器名称,这将是一个问题——您甚至不应该在短期运行的工作进程中这样做。

于 2020-05-28T16:00:01.077 回答