2011-12-02 70 views
0

我有一個解析函數,它解析一個文件需要很長時間。 我想在解析文件的函數中顯示進度條。 我添加toolstripprogressbar並設置其屬性。 但是我不知道它們是如何同步運行的。.net statusstrip進度條開始進度

我想要做這樣的事情:

// progressBar start progress 
parseFile(); 
// progressBar finish progress 

我搜索一下,for循環和線程用於這一點,但他們不是爲我很有幫助。 我該怎麼做?

回答

4

您確實需要在後臺線程中運行長時間運行的操作,後臺線程可以定期向GUI線程報告它正在做什麼(並在此過程中更新進度條)。

我希望各位能夠了解後臺工作,這裏http://www.dotnetperls.com/backgroundworker

MSDN頁面在這裏:http://msdn.microsoft.com/en-us/library/8xs8549b.aspx

您還可以看到一個非常相似的,所以問題在這裏:C# Winform ProgressBar and BackgroundWorker

+0

是的,你是對的我認爲這是關於我的問題。我會搜索並給你反饋。感謝您的回覆 – user983924

1

如果你想顯示進度,那麼您必須以某種方式將您的長進程分爲兩個階段或已處理的數據間隔 - 並且在處理完階段/間隔之後增加進度條位置。

爲3個階段實施例: 設置進度最大值爲3。 第1階段)打開和讀取文件到存儲器 - 設置progressBar.Value到2 - 完成這個 第2階段)解析文件之後設置progressBar.Value 1之後 階段3)額外的處理? - 之後設置progressBar.Value爲3 = Max =進程已完成。

文件大小的示例: 讓我們想象一下,您可以測量到目前爲止,您已經解析了哪部分文件,以字節爲單位。然後,首先將progressBar.Max設置爲以字節爲單位的文件大小。然後,在每個處理過的來自文件的字節塊之後,您應該將progressBar.Value設置爲已處理的字節數。

第二種方法通常更精確,progressBar運行更平穩,但並不總是可以使用它。