通过com interop使用MS Project时,如何避免异常“app is busy”?

时间:2016-11-23 12:00:24

标签: c# office-interop ms-project

我们有一个可以向/从MS Project导出数据的应用程序。数据量可能很大 - 1000多个任务。 但即使是小数据部分,我们也注意到了奇怪的Project行为 - 当你连续执行多个操作时,它会在你的脸上抛出“app is busy”异常。例如。创建一个新任务,并阅读其完成日期。 在刚创建Application对象之后,它甚至可以将此异常作为第一个操作抛出。含义:

var projectApp = new Application();
projectApp.Open(...);

在第二行,我们可以捕获此异常只是因为Project app仍在加载。

我尝试添加Thread.Sleep,但这不是一个好方法,因为某些操作需要的时间比其他操作要多,并且操作所需的时间在不同的计算机上是不同的(由于性能)。

所以questuin是: 有没有办法检测项目应用程序是否忙碌而没有始终获得这些不可预测的例外?

1 个答案:

答案 0 :(得分:0)

将STA应用于线程任务并使用OleMessageFilter通过google找到注册/撤销解决了问题!感谢Hans Passant的评论让我得到了这个答案!