2015-04-28 58 views
0

我正在维护Outlook的VSTO加载项,并且它有一个可以处理与服务器同步的BackgroundWorker。我希望工作人员在UI中触发用户错误(更改按钮上的图片,在设置窗口中启用消息)。VSTO Outlook加载项,UI操作是否需要从主线程完成?

是否需要从初始线程完成UI操作?

This StackOverflow answer说不是,但comment on it这么说。它适用于Excel,但仍适用于VSTO加载项。我试过了,它似乎可以从任一线程中工作,但可能会出现我还没有遇到的竞争状况。

回答

0

是的,所有Outlook/Office对象模型访问都必须从主线程完成。见VSTO with Windows Form and Worker Threads

+0

只是为了澄清,这也适用于用户界面?我正在考虑将UI与对象模型分开。我的工作人员在本地数据库和服务器之间进行同步,它不直接从Outlook访问数据。 – Vimes

+0

是的,特别是用户界面。 –

0

我完全同意德米特里。 Office应用程序使用单线程公寓。您应该只在主线程上访问对象模型。如果您需要执行一些后台处理,则可以从Outlook对象中提取所需的信息,并运行辅助线程来处理辅助线程中的数据。或者您可以使用低级别的API - 扩展MAPI(或围绕该API的任何其他第三方包装)。

相关问题