我只是将消息文件列表转换为组合pst。以下是我的代码:
RDOSession pstSession = new RDOSession();
RDOPstStore store = null;
var pstPath = "D:\\test\\combined.pst";
store = pstSession.LogonPstStore(pstPath, 1, "combinedPST");
RDOMail rdo_Mail =
pstSession.GetMessageFromMsgFile(dr["FullPathOfMessageFile"].ToString());
rdo_Mail.CopyTo(store.IPMRootFolder);
rdo_Mail.Save();
store.Save();
pstSession.Logoff();
这是一个Windows窗体应用程序。在代码上运行会在test文件夹中创建一个文件combined.pst。当我尝试在outlook中打开此pst时,outlook会提示此pst当前正被另一个进程使用。从应用程序关闭我的胜利后,可以加载pst。 我认为兑换API会锁定创建的PST。我错过了什么?我还需要处理什么其他对象?
答案 0 :(得分:0)
出于性能原因,PST提供商会将PST文件引用并加载30分钟。或者直到PST提供者dll本身被卸载(例如,当主机进程终止时)。 您可能希望使用http://support.microsoft.com/Default.aspx?kbid=222328
中提到的注册表项答案 1 :(得分:0)
创建一个控制台应用程序(exe)并添加在那里创建pst的逻辑。稍后执行此exe在您的应用程序中创建一个进程。这样,生成的pst不会被锁定,您可以移动,修改或删除文件。