60ms更新一次,更新后加
Application.DoEvents();更新有必要这么快吗?人的反应有这么快么?

解决方案 »

  1.   

    新建一个线程来接收??
    返回数据写在datareceived事件中就行了。
    你设置一个缓冲区,datareceived触发的时候就将信息存入缓冲区中。当数据全部接收上来了,触发一个信号量,给线程。你只需要开一个线程,访问缓冲区就行了。
      

  2.   

    我现在就没有用datarecive事件。
      

  3.   

    我现在刚改成委托了,但是还是不能正常的更新数据,我是在显示那里用的委托,贴点代码吧,这样看更清楚,
     private void disp()  //对处理后的数据在界面上进行显示
            {
                label31.Invoke(new EventHandler(delegate
                {
                    label31.Text = cunt.ToString();
                }));
                if (address == 112)
                {
                    switch (fun_code)
                    {
                        case 80: //实时浓度
                            gas_value1.Invoke(new EventHandler(delegate
                            {
                                gas_value1.Clear();
                                gas_value1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
                                gas_value1.SelectedText = ' ' + gas_value.ToString();
                            }));
                            break;
                        case 39: //上限
                            gas_alarm_up1.Invoke(new EventHandler(delegate
                            {
                                gas_alarm_up1.Clear();
                                gas_alarm_up1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
                                gas_alarm_up1.SelectedText = ' ' + gas_alarm_h.ToString();
                            }));
                            break;
                        case 41: //下限
                            gas_alarm1.Invoke(new EventHandler(delegate
                            {
                                gas_alarm1.Clear();
                                gas_alarm1.SelectionFont = new Font("宋体", 10, System.Drawing.FontStyle.Bold);
                                gas_alarm1.SelectedText = ' ' + gas_alarm_l.ToString();
                            }));
                            break;
                    }
    这是一部分,然后我就在辅助线程调用的接收数据的方法里调用这个显示,结果还是不行,不知道什么原因?