老问题了,进度条的问题
一个ListView
在给ListView绑定数据的时候显示一个进度条
首先通过SqlDataReader进行读取数据 存放到一个DataTable里面
然后用For循环这个DataTable
C# code
int j=0;
for (int i = 0; i < DataTable.Rows.Count; i++)
{
ListViewItem lvitem = new ListViewItem(Convert.ToString(J++), i);
lvitem.SubItems.Add(DataTable中的数据);
this.LV_HY_Total.Items.Add(lvitem);//给窗体的ListView填充数据
}
现在我想从SqlDataReader的时候开始一直到for循环结束` 显示一个进度条`必须要是实时的``
假如有数据库有1万条数据(在查询这1万条数据的时候进度条就开始动,查询也完成了进度条就到了50%的状态,因为还有for循环)
从数据库查询完成显示为50% 在for循环结束显示100%
最好能是一个通用的办法
------解决方案--------------------
其实很简单,可以用BackgroundWorker
他有三个事件
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
//SqlDataReader 读到 DataTable
worker.ReportProgress(50, "查询完成");
}
private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//DataTable写到DataView
progressBar1.Value=...
}
------解决方案--------------------
先获取总记录数,然后每获取一条 让变量+1
变量/总记录数 就是当前进度
------解决方案--------------------我都放到线程池里执行
------解决方案--------------------放另一个线程里去刷新进度条