委托试试
http://blog.sina.com.cn/s/blog_a3d2fd2d0101dcwy.html

解决方案 »

  1.   

    但是我在子线程里面已经用了匿名委托来更新控件了啊,如下:
            public void JQHandler()
            {
    #if true
                while (true) 
                {
                    //当前气量增加,流速/10  
                    if (chkJQStart.Checked)
                    {
                        if (txtCurVol.InvokeRequired)
                        {
                            txtCurVol.BeginInvoke(new MethodInvoker(delegate()
                            {
                                fCurVol = float.Parse(txtCurVol.Text) + float.Parse(txtFlowRate.Text) / 10.0f;
                                txtCurVol.Text = fCurVol.ToString("#0.0000");
                            }));
                        }
                        //Thread.Sleep(100);
                        Thread.CurrentThread.Join(100);
                    }
                }
    #endif
            }
      

  2.   

    textbox中的内容不能太多,否则刷新时间比100ms还长的话,那么就变成所有时间都在忙着刷新你那个textbox。
      

  3.   

    comport.DataReceived += new SerialDataReceivedEventHandler(ComDataRecv);//串口接到数据会激发这个事件
    还有,你把串口通信的代码写在主线程里了。
    涉及通信的,最好都另开线程。反而是UI应该在主线程。
    你弄反了。
    通信放主线程,更新UI放新线程里再委托,这是闹哪样
      

  4.   

    但是那个
    comport.DataReceived += new SerialDataReceivedEventHandler(ComDataRecv);//串口接到数据会激发这个事件
    不是会自动创建一个线程吗?这个相当于我没有在主线程里面进行通信啊?不是很明白,请指点