【发布时间】:2012-09-16 05:39:27
【问题描述】:
我有一个很大的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;
}
所以我正在寻找两件事:
- 设置进度条的最大值。
- 正确设置步长索引。
请建议我前进的方法。
【问题讨论】:
标签: c# file progress-bar backgroundworker