VSTO 加载项崩溃 Outlook

VSTO addin crash Outlook

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

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

附件在使用后转化为蒸汽并处理掉。 字符串 AttachSchema = "http://schemas.microsoft.com/mapi/proptag/0x37010102"; byte[] filebyte = null;<br> PropertyAccessor pacc = attachment.PropertyAccessor; filebyte = (byte[])pacc.GetProperty(AttachSchema);<br> 流 stream = new MemoryStream(filebyte);

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

首先,访问 PR_ATTACH_DATA_BIN(或任何其他大型 PT_BINARY 属性)可能无法使用 PropertyAccessor 对象(尤其是在在线模式下),因此您可能会更好使用 Attachment.SaveAsFile 然后在必要时将文件加载到内存(或内存映射文件)中。

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