MS Project VSTO:关闭MS Project会导致它无限期挂起

时间:2013-01-18 11:04:21

标签: vsto ms-office ms-project

我已在2010年和2013年的项目中复制了这个问题。

我使用Visual Studio 2010开发了一个VSTO插件。在这个插件中,我暴露了一个COMVisible方法。

我还有一个不同的(非.NET)应用程序,然后实例化Project COM对象,搜索我的插件并调用我标记为COMVisible的方法。

这会导致Project打开一个“新”项目文件并向其写入内容。

这个非.NET应用程序在我的插件中调用COM方法后,会停止执行(不关闭MS Project)。

然后我关闭新创建的项目(不是MS Project,只是文件)。一切都好;但是,当我尝试关闭MS Project时,它会无限期地挂起。在任务管理器中,它仍显示为“正在运行”,单击“MS Project”窗口会显示“切换到”,“重试”,“取消”对话框,通知我其他应用程序正忙...

令人惊讶的是,如果我选择不关闭新创建的Project文件,只需关闭MS Project窗口,它就会正常关闭。

这里可能会发生什么?

1 个答案:

答案 0 :(得分:0)

好的,经过多次调查,我找到了问题的答案。基本上从我的VSTO Addin公开的COM类需要继承“StandardOleMarshalObject”。

原因是因为我的Addin中的COM方法正在访问辅助线程(调用应用程序的线程)上的项目对象模型。这是一个很大的不。从该类编组派遣所有调用该辅助线程到主UI线程,从而解决问题。