2014-02-24 85 views
0

我有outlook插件,它适用于两个版本的Outlook(2010和2013)。 通过使用加载项Outlook作为我们服务器的客户端,并从服务器获取邮件项目(也是非邮件项目)到Outlook客户端。加载项在启动时同步pst,同步按钮按下时以及在预定义的时间间隔之后。 现在,Outlook也使用该pst来显示同步后的更新项目。 我正面临的问题是,当外接程序正在提取邮件时,Outlook进入“无响应”状态,并且在加载项完成同步之后,Outlook现在可以正常工作。插件同步所花费的时间随着pst文件大小的增加而增加。如果pst的大小约为590MB,并且插件需要10分钟才能同步,则Outlook将在这10分钟内处于无响应状态。 我需要解决它。通过让Outlook等待,直到同步正在进行,并在outlook的标题栏中显示某种等待同步消息,而不是响应。 由于pst是在加载项和Outlook之间共享的,因此我希望Outlook在等待加载项使用时保持稳定。我在插件中有一个对话框,显示进度(例如,获取消息1/6000),默认最小化。 任何建议将不胜感激。 Registers Ali Kazmi展望未响应(2010年和2013年)

回答

1

你真的需要使用多个线程来避免阻止Outlook。不幸的是Outlook对象模型对象不能用于主Outlook线程以外的线程。

如果您使用的是C++或Delphi,则可以使用Extended MAPI(可以从多个线程使用)。否则你可能会想看看Redemption - 它是RDO对象系列可以从多个线程中使用。

+0

我从MSDN得到了同样的答案,我使用C++并且有多个线程用于同步。我想实现的目的是让Outlook在其标题栏上显示一条等待消息(现在它显示没有响应的消息),同步正在进行中,有点困惑,如何实现它 –

+0

如果您使用的是C++,那么您需要切换到使用扩展MAPI而不是OOM并从辅助线程进行同步。 –