VSTO加载项崩溃Outlook

时间:2018-08-14 14:46:09

标签: vsto outlook-addin

我需要循环所有Outlook项目并搜索完全填充包括所有附件的正则表达式模式的字符串。
我知道这是一项很大的操作,需要大量资源,但是该项目需要这样做。 我设法制作了可以执行此操作的VSTO插件,但问题是该插件有时导致Outlook挂起。这不是一个好的业务解决方案,它不能稳定运行。 在我的代码中,请确保在使用COM对象后将其关闭。

outlookItem.Close(OlInspectorClose.olDiscard); Marshal.ReleaseComObject(outlookItem);

将附件转换为蒸汽并使用后处理。 string AttachSchema = "http://schemas.microsoft.com/mapi/proptag/0x37010102"; byte[] filebyte = null;
PropertyAccessor pacc = attachment.PropertyAccessor; filebyte = (byte[])pacc.GetProperty(AttachSchema);
Stream stream = new MemoryStream(filebyte);

任何人都可以就如何使Addin稳定提供一些建议吗?

1 个答案:

答案 0 :(得分:1)

首先,使用PropertyAccessor对象(尤其是在联机模式下)访问PR_ATTACH_DATA_BIN(或任何其他大的PT_BINARY属性)可能不起作用,因此最好使用Attachment.SaveAsFile然后根据需要将文件加载到内存(或内存映射文件)中。

第二,请记住,您只能在主Outlook线程上使用OOM。要在辅助线程上运行代码,您需要扩展MAPI(仅C ++或Delphi)或Redemption(其RDO对象系列可以在辅助线程上使用)。