2016-11-23 64 views
0

我們有一個應用程序,可以導出和從MS Project導入數據。數據量可能很大 - 超過1000個任務。 但即使對於小數據部分,我們也會注意到奇怪的項目行爲 - 當您連續執行多個操作時,它可能會在您的臉上拋出「應用程序正忙」異常。例如。創建一個新任務,並閱讀完成日期。 在剛剛創建應用程序對象後,它甚至可以將此異常作爲第一個操作引發。含義:如何避免在通過com interop使用MS Project時遇到「應用程序繁忙」異常?

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

在第二行,我們可以捕獲這個異常,只是因爲項目應用程序仍在加載。

我試圖添加Thread.Sleep,但這不是一個好方法,因爲某些操作需要比其他操作更多的時間,並且操作所需的時間量在不同計算機上(由於性能)不同。

所以問題是: 有沒有一種方法可以檢測到Project應用程序繁忙而不會一直得到這些不可預料的異常?

+1

谷歌「c#CoRegisterMessageFilter」點擊。 –

回答

1

將STA應用於線程任務並使用OleMessageFilter通過google找到的註冊/撤銷解決了問題!感謝Hans Passant對他的評論,這讓我得到了這個答案!

相關問題