天天看點

Jacob 使用細節優化

Jacob 可以用來做很多事,我這裡主要用到了通過 office 轉 pdf 的功能。

在使用過程中,偶爾會出現(1%的機率)程序異常,出現彈框等問題導緻程式假死。

為了解決類似問題,在使用過程中,可以從以下細節進行優化。

1. 隻讀模式

使用 office 時,如果檔案被占用,在打開始會彈框進行提示:

Jacob 使用細節優化

出現該彈窗後會導緻程式卡住不動。

如果改為隻讀模式,就不存在這個問題,代碼如下:

Jacob 使用細節優化

注意上面第二行第一個參數,設定為 ​

​true​

​ 就能解決。

2. 逾時重試

如果在轉 PDF 過程中,出現下面的錯誤:

Jacob 使用細節優化

就會導緻轉換失敗,而且不點選【關閉程式】的情況下該程序會卡住。

增加逾時重試機制後,雖然該錯誤視窗還在,但是轉PDF可以成功繼續。

3. 定時清理錯誤程序

上面錯誤中,對應的錯誤程序為 ​

​WerFault.exe​

​,可以通過在定時任務中執行下面代碼關閉該視窗:

Runtime.getRuntime().exec("taskkill /F /IM WerFault.exe");      

在出錯的的情況,假設是 word 轉 pdf,此時在程序清單中,還會一直有對應的 ​

​WINWORD.EXE​

​ 一直在運作,通過監控程序 PID 存在時長來判斷是否因為異常已經很久沒有關閉,通過代碼來關閉相應的程序。

通過下面代碼擷取程序清單:

taskkill /nh /FI "IMAGENAME eq XX.EXE"      

代碼如下:

Jacob 使用細節優化

擷取 ID 後,記錄程序 ID 被搜尋到幾次:

Jacob 使用細節優化

當超過一定次數的時候關閉程序:

Jacob 使用細節優化

批量關閉程序:

Jacob 使用細節優化