我正在编写VSTO Outlook加载项,该加载项需要将某些项目另存为msg文件。问题是,每次我调用MailItem.SaveAs时,它都会导致Outlook稍微滞后并显示正在处理的光标(蓝色圆圈)。 我试图将它移动到一个单独的线程中,但这无济于事。 保存项目的速度非常快(大多数时间少于100毫秒),但仍会导致这种烦人的行为。 我需要保存一个项目以将其读取为MSG格式,因此,如果我可以直接执行此操作,效果会更好,但是正如我在此处找到的那样: Outlook MailItem as Stream 唯一的解决方案似乎为此使用EWS。还有其他选择吗?
在这种情况下,也许使用RDO可以有所帮助? 据我了解,另一种选择是从邮件项目属性手动创建味精。但是也许有一种更简单的方法?
答案 0 :(得分:2)
与OOM不同,Outlook所基于的低级API(扩展MAPI)支持多线程。因此,您可以在辅助线程上运行代码,而不会对Outlook UI产生任何可见影响。有关更多信息,请参见INFO: Save Message to MSG Compound File。
您还可以考虑围绕扩展MAPI使用第三方包装,例如“兑换”。