VSTO Outlook 加载项,UI 操作是否需要从主线程完成?
VSTO Outlook add-in, does UI manipulation need to be done from main thread?
我正在为 Outlook 维护一个 VSTO 加载项,它有一个处理与服务器同步的 BackgroundWorker。我希望工作人员在 UI 中触发用户错误(更改按钮上的图片,在设置中启用消息 window)。
UI 操作是否需要从初始线程完成?
This Whosebug answer says not, but a comment on it 这么说。它适用于 Excel,但仍然适用于 VSTO 加载项。我试过了,它似乎可以在任何一个线程上工作,但可能存在我尚未遇到的竞争条件。
是的,所有 Outlook/Office 对象模型访问都必须从主线程完成。参见
我完全同意 Dmitry 的观点。 Office 应用程序使用单线程单元。您应该只在主线程上访问对象模型。如果您需要进行一些后台处理,您可以从 Outlook 对象和 运行 辅助线程中提取所需信息,以在辅助线程上处理数据。或者您可以使用低级 API - Extended MAPI(或围绕 API 的任何其他第三方包装器)。
我正在为 Outlook 维护一个 VSTO 加载项,它有一个处理与服务器同步的 BackgroundWorker。我希望工作人员在 UI 中触发用户错误(更改按钮上的图片,在设置中启用消息 window)。
UI 操作是否需要从初始线程完成?
This Whosebug answer says not, but a comment on it 这么说。它适用于 Excel,但仍然适用于 VSTO 加载项。我试过了,它似乎可以在任何一个线程上工作,但可能存在我尚未遇到的竞争条件。
是的,所有 Outlook/Office 对象模型访问都必须从主线程完成。参见
我完全同意 Dmitry 的观点。 Office 应用程序使用单线程单元。您应该只在主线程上访问对象模型。如果您需要进行一些后台处理,您可以从 Outlook 对象和 运行 辅助线程中提取所需信息,以在辅助线程上处理数据。或者您可以使用低级 API - Extended MAPI(或围绕 API 的任何其他第三方包装器)。