我有一個大的text file
包含大量的數據行。在我的應用程序中,我打開這個文件,通過匹配正則表達式讀取每一行,並將其顯示在Datagridview中。產生的行總數大約在2000年左右(有時甚至更多,如此巨大的)。進度條和文件加載
因此,對於所有這些操作,需要相當長的時間。所以我使用後臺工作者將這段代碼移入另一個線程,一切都很好,只是我想在進度條中顯示加載狀態,我失敗了。
我已經使用FileInfo
類來獲取文件長度,然後將此值給予Progressbar.Maximum
。似乎不是正確的方法,因爲包含「3」行的測試文件返回的文件長度爲「305」。我不明白我應該以這種方式給予多少步驟間隔。
代碼示例:
FileInfo ff = new FileInfo(openFileDialog1.FileName);
int fsize= Convert.ToInt32(ff.Length);
int val=1;
pgbar_load.Invoke(new MethodInvoker(delegate { pgbar_load.Maximum = fsize; }));
,並在循環:
++val;
wk.ReportProgress(val);
然後:
private void bgwrkr_load_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pgbar_load.Value = e.ProgressPercentage;
}
所以兩兩件事是我在尋找:
- 設置進度條的最大值。
- 正確設置步驟索引。
請給我一種前進的方法。
我怎樣才能每次讀取總讀取字節,我的意思是int totalRead值?首先,我讀取所有文件並將數據存儲在通用列表中。然後在一個循環中,我更新了顯示進度的datagrid的每一行。 – Cdeez
你可以看看我在做什麼的問題中添加的代碼。 – Cdeez
對這個答案的編輯很少會給出結果--- 'totalRead'和'totalFilesize'應該是'double'值,因爲如果它們是整數,結果總是爲零(將結果類型轉換爲整數)和100d * 0 = 0。和'Math.Ceiling();' – Cdeez