我定义了一个label和一个进度条pb
逻辑如下
DataRow[] drs..
int total = drs.length;
for(int i = 0; i< drs.total; i++)
{
........
label.text = i.tostring() + "/" + total.tostring();
pb.value = i * 100 / total
}
问题来了,进度条是在变化着的,label不变,直到循环完成,才直接显示 22/22 10938/10938等
这个是什么原因呢,显示不同步。
我没起线程
要用后台线程去更新label的值的
我没起线程,都在ui线程里跑的,只是搞不懂原因而已
@gzl: 知道你没起线程啊。你先试验下看看。
应该是不是不变。是不是太快。你没有看清楚呢
感觉,要是不起线程,进度条也变不了哪去吧?起线程。子线程做数据,主线程更新UI。
有分不?
你用this.invoke。把你那些操作放到这个invoke里面就行了
你都循环语句是在后台线程中进行的,需要使用Invode或者BeginInvoke方法主动更新ui线程。
给进度条加个事件,在事件里改变标签的值。
事件也相当一个线程。
或者用绑定也一样。
Application.DoEvents();