我們在Delphi 7中使用一些OLE自動化來打開一個word文檔,然後加載,保存並加載到數據庫中。德爾福OLE自動化凍結圖形用戶界面
這工作正常,但要求的一部分是在OLE位發生時有一個進度條,如果OLE部分需要的時間太長,也是一個超時。
我們遇到的問題是當OLE發生時整個GUI凍結。進度條什麼都不做,然後在最後射擊。
關於我們如何解決這個問題的任何想法?
我們在Delphi 7中使用一些OLE自動化來打開一個word文檔,然後加載,保存並加載到數據庫中。德爾福OLE自動化凍結圖形用戶界面
這工作正常,但要求的一部分是在OLE位發生時有一個進度條,如果OLE部分需要的時間太長,也是一個超時。
我們遇到的問題是當OLE發生時整個GUI凍結。進度條什麼都不做,然後在最後射擊。
關於我們如何解決這個問題的任何想法?
我認爲這將很難做到乾淨利落。據我所知,Word自動化不會讓您有機會取消長時間運行的事件。它也不會通知你進度。
也許你能做的最好的事情是首先將自動化轉移到一個單獨的線程中。然後在進行長時間運行的自動化的同時拋出一個選取框進度條。至少會讓用戶知道發生了什麼事情。
只要取消,您可以讓用戶從您的進度對話框中取消,然後讓您的程序繼續。您可以終止自動化線程,但這會使Word處於不良狀態。我只是讓它繼續完成,但然後忽略結果。從用戶的角度來看,這將很好地滿足你的目標,即使它在幕後有點骯髒。
會使用自己的線程是一個選項? – bummi 2013-03-05 09:51:03