2008-12-22 60 views
4

我有一個小型應用程序來轉換幾個文件格式,主窗口包含幾個文本框,按鈕等窗體。我有另一個「文檔」類處理所有的實際轉換工作,我的表單基本上遍歷所有文件,並調用適當的Document方法來轉換文件。但是,當這種情況發生時,表單停止響應。我創建了另一個帶有進度條和取消按鈕的簡單表單,以便在轉換開始向我們(輕鬆喧鬧的)用戶提供一些反饋時生成。然而,當新窗體加載時,所有控件都是白色框,並且它也停止響應。轉換完成後,進度欄會正確關閉,主窗體將再次響應。Windows窗體:進度條無響應

是否有一種簡單的方法使這兩種形式獨立,以便進度條可以在其他形式無響應時運行?

回答

7

最簡單的解決方案是使用BackgroundWorker組件在後臺線程上完成處理。您可以從VS工具箱中將其拖入。它允許你用進度通知來更新UI線程,這樣你就可以更新你的進度條來顯示實際的值(比使用「marquee」風格的進度條更加用戶友好)。

0

您應該使用兩個線程,以便表單在您工作時繼續響應。

這很常見,.NET有一個BackgroundWorker控件,它爲你包裝了一些。

-1

只需稍後調用Application.DoEvent(),可能在您的循環中。 不如BackgroundWorker正確,但它更簡單。

0

最簡單的解決方案是使用BackgroundWorker組件在後臺線程上完成處理。您可以從VS工具箱中將其拖入。它允許你用進度通知來更新UI線程,這樣你就可以更新你的進度條來顯示實際的值(比使用「marquee」風格的進度條更加用戶友好)。