由于占用系统资源较多,程序运行后窗口像死住一样,直到整个循环跑完而用户希望 能显示循环到第几条,我在界面上放了个Label,在循环里设置了1个Label的值,但是直到循环跑完才有用中间过程 Label得值没有改变,基本像死机一样for(int i=0;i<aryCMBUnsettledOrder.Count;i++)
{
this.progressBar1.Value = ((i+1)*this.progressBar1.Maximum)/aryCMBUnsettledOrder.Count;ArrayList oItem  = (ArrayList)aryCMBUnsettledOrder[i];

AddPaymentOrderFromBank(oItem[2].ToString(),oItem[0].ToString(),oItem[1].ToString(),oItem[3].ToString(),"1");this.lbCount.Text = "已经加载" + i.ToString() + "条数据";
}请问是否应该使用多线程或异步之类的方法?如何使用? 谁能给各例子?

解决方案 »

  1.   

    多线程。
    开一个新线程来处理循环,循环中使用事件,主线程中处理事件,显示加载了多少条数据。
    不知道有没有说清楚,不清楚欢迎继续讨论,例子也有,楼主留下email可以发给你。
      

  2.   

    this.lbCount.Text="XXX";
    //加上
    this.lbCount.Refresh();
      

  3.   

    十分感谢楼上 Refresh 很管用