繁体   English   中英

Outlook VSTO-同步收件箱状态

[英]Outlook VSTO - Synchronize Inbox State

我正在使用ItemsEvents_ItemAddEventHandler成功查看何时收到新电子邮件。 就像我期望的那样,这段代码显然是Outlook的同步调用。

我试图在收到一条消息后处理收件箱,因此接收处理性能下降。 整个下载完成后,我的过程也可以执行(最好)执行。

因此,似乎我需要一个事件处理程序来完成同步过程,而无法在Application或Folder类中找到它。

此状态或事件将隐藏在哪里?

实际上, ItemAdd事件是异步的,并且在已添加并保存该项目后将触发该事件。 从某种意义上说,它在Outlook主线程上触发是正确的。

您可以等待,直到使用计时器添加了更多项目为止-触发ItemAdd事件(将重置计时器)时将其禁用/启用。 当计时器稍后触发(几秒钟?)时,您可以确定ItemAdd触发时间没有达到计时器间隔的时间。 确保使用Forms命名空间中的Timer对象(它在主线程上触发)。

您还可以使用SyncObject对象的事件( SyncStart / SyncEnd / etc.事件)。 Namespace.SyncObjects集合中的第一个同步对象是“发送/全部接收”。

请注意,您不能将Outlook项目处理工作转移到辅助线程上-OOM只能在主Outlook线程中使用。 您将需要扩展MAPI(仅C ++或Delphi)或兑现 (其RDO对象系列可在辅助线程上使用-在主线程上保存Namespace.MAPIOBJECT属性的值,在辅助线程上创建RDOSession对象,设置其MAPIOBJECT属性)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM