大量のデータ行を含む大きな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;
}
だから私が探している2つのこと:
- プログレスバーの最大値を設定します。
- ステップインデックスを正しく設定します。
前向きになれる方法を教えてください。