程序中我new 了一个窗体用户显示后台的进度情况,可我发现可能是因为刷新速度过快,前台无法显示,而后我又用线称试图解决这个问题,结果也是不成功...请教各位达人怎么解决..贴上用户显示那部分的代码myinsert.ExecuteNonQuery();
childform.label1.text=string.Format(themessage1,roll.ToString());然后我试图用线称实现的代码
Thread showmessageMax=new Thread(new ThreadStart(myprogress.showmessageMax));循环部分的代码
myinsert.ExecuteNonQuery();
myprogress.messageMin=string.Format(themessage1,roll.ToString());
showmessageMin.Start();
还是不能达到我想要的效果...
请问各位达人是怎么做的

解决方案 »

  1.   

    用委托吧....定义一个委托:
    public delegate void MyInvoke(string txt);更新函数:
    public void UpdateLabelText(string txt)
    {
          this.lable1.text=txt;
    }在需要更新的地方:
    MyInvoke mi=new MyInvoke(UpdateLabelText);this.BeginInvoke(mi,new object[]{text});
    大致是这个意思,随手写的,可能语法还有误...试下吧...
      

  2.   

    private void button1_Click(object sender, EventArgs e)
           {
               flag = true;
               Thread thread = new Thread(new ThreadStart(Exec));
               thread.IsBackground = true;
               thread.Start();
           }        private void Exec()
            {
                while(flag)
                {
                  //process task here:
                  myinsert.ExecuteNonQuery();              Invoke((MethodInvoker)delegate
                  {
                     //process UI here:
                     this.lable1.text = String.Format(themessage1,roll.ToString());
                  });
                  
                  //release CPU:
                  Thread.Sleep(10);
                }
            }
      

  3.   

    添加一个childform.label1.Refesh();
      

  4.   

    最后我是用线程池做出来的,楼上bigrongshu(人中直似衡,财上平如水) 的方法也都行,用委托的方法我没搞出来,别人说有这样的方法
    thanks 散分了