2013-03-19 50 views
0

在我的.NET應用程序中,我正在將大型SQL表讀入內存,並且我希望應用程序窗口中的ProgressBar進度至少有所提高,而​​操作正在阻止。我已經在BackgroundWorker對象的後臺線程中調用Fill(),我試圖在前臺線程中更新ProgressBar,該線程調用了RunWorkerAsync(),但這不起作用。這裏有什麼建議?如何在長時間的外部操作中更新ProgressBar?

+0

你不會從Fill獲得進展。你可以嘗試OnRowUpdating/Updated,或者去一個基於計時器的簡單動畫。你如何研究取得了多大進展,取決於你在做什麼。如果這太重了,那麼計數也可能很重。 – 2013-03-19 21:04:43

+0

我知道'Fill()'沒有更新。我試圖做的是在後臺線程執行'Fill()'的時候,在前臺線程中爲ProgressBar創建動畫,但這不起作用。 – Conrad 2013-03-19 23:04:27

+1

可能沒有想過自己。只需在灌裝開始時關閉計時器,並在灌裝完成時停止計時。 – 2013-03-20 02:28:10

回答

0

由於無法從Dataset.Fill中獲取進度,因此直接使用OnRowUpdate/OnRowUpdated會很痛苦,而且仍然無法完成%完成操作,因此您會發現應更新多少行。

不妨在這裏打一個計時器,並在填充任務運行時更新一些動畫。

作爲一個方面說明,我們寫了一個小動畫組件,它運行在它自己的線程中,您傳遞想要在線程中執行的方法。把它一切都很好地包起來,你可以把它放在一個使用塊中,並且整齊整齊。適用於火災和忘記線程,並且您也可以執行模式版本。