我使用簡單的控制檯應用程序將infopath表單轉換爲PDF文件。以下是我如何解決這個問題的簡要總結。Infopath FormControl掛在control.open
總結: 控制檯應用程序創建一個窗口的形式。當窗體被加載(模態)時,我添加一個infopath控件(Microsoft.Office.InfoPath.FormControl)到這個窗口。那時我調用了infoPathControl.Open(myInfoPathFileStream)。所有這些都是在forloop中完成的。
問題: 隨機應用程序會拋出異常(災難性故障,堆腐敗,等等),甚至更好它會偶爾掛而不發出一個錯誤。記錄和調試使我相信它掛在了infoPathControl.Open(myInfoPathFileStream)調用中。很顯然,對於自動化流程來說,這是不可接受的。
試圖(但失敗了)解決方案
- 我試過包裹在它自己的(STA)線程每個創建形式和使用的Thread.join。由於COM的問題,這沒有奏效。
- 我試過在自己的應用程序域中包裝循環的每個迭代。這在一定程度上起作用,但由於appDomain的性質仍然是同步的,它不會解決無錯誤掛起的問題。此外,奇怪的是,我似乎並不總是能夠捕獲COM對象拋出的異常。
- 最後,我試着在表單線程上放置一個定時器,以便在定時器過期時拋出異常。到目前爲止,如果這種方法有效,我還沒有能夠證明任何一種方式。
任何想法將不勝感激,因爲我已經花了很多時間在這。
謝謝!