我通过点击button按钮,循环上传文件到服务器上。每上传一个就把lbl标签改变一下。
下面是一点代码: 
private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                for(int i=1;i<=100;i++)
{
upLoad(i.ToString());
this.lbl.Text = i+"/100";
}            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString());
            }
        }
private void upLoad(string fileName)
{
......
}
现在问题是我点击了button按钮以后,程序执行了,但是不能实时显示上传了多少,只能看着漏斗状的鼠标,一直到全部上传成功显示了100/100请问如何解决?

解决方案 »

  1.   

    public void btn_click(object sender,EventHandle e)
    {
    Thread thread=new Thread(new ThreadStart(yourmethod));
    }
    public void yourmethod()
    {
    //doing something
    }
      

  2.   

    添加一个timer1
     设置timer1每隔一秒(或者更小时间)刷新label.text
      

  3.   

    使用application.doevents()  有没有用?
      

  4.   

    下面这样就行了:
    private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    for(int i=1;i<=100;i++)
    {
    upLoad(i.ToString());
                                
    this.lbl.Text = i+"/100";
             Application.DoEvents();
                       }            }
                catch (Exception ee)
                {
                    MessageBox.Show(ee.Message.ToString());
                }
            }
      

  5.   

    代码改成如下的多线程试一下private void button1_Click(object sender, EventArgs e)
    {
               System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(Exec));
               thread.IsBackground = true;
               thread.Start();
    }private void Exec()
    {
                for(int i=1;i<=100;i++)
                {
                  upLoad(i.ToString());              Invoke((MethodInvoker)delegate
                  {
                     this.lbl.Text = i+"/100";
                  });
                }
    }
      

  6.   

    实际上就是单线程程序在忙一个任务(上传文件,没有时间来刷新)解决方法1:在每个上传点结束后加2句 Application.DoEvent(); this.lb1.Refresh();解决方法2: 使用单独的工作进程来处理上传任务, 在任务中通知主线程改变label的外观.相比较而言, 1比较简单, 2比较好用. 我一般用2.