控件的.BeginInvoke(new Action(() =>...))语句被执行了两遍?

发布时间:2025-05-09 02:30

理解编程逻辑:条件语句和循环控制 #生活知识# #编程教程#

一个线程,监视串口接收事件:

        void SenMonitor(object sPort)
        {
            //发送缓冲区空 or 有字符收到 or 接收帧错误
            MyCom.SetComMask(EV_TXEMPTY | EV_RXCHAR | EV_ERR);
            //------------------------------------------------------------
            while (rec_sw)
            {
                uint ComMask = MyCom.WaitComEvent();
                if (ComMask > 0)
                {
                    string tmp = "";
                    tmp = "串口事件" + ComMask.ToString("X2") + "\r\n";
                    txtRec.BeginInvoke(new Action(() => txtRec.Text += tmp));
                    switch (ComMask)
                    {
                        case EV_TXEMPTY:
                        {      break;. }
                        case EV_RXCHAR:
                        {
                            eTime = DateTime.Now.Ticks;
                            allTime = ((Single)(eTime - sTime) / 10).ToString();
                            //---------------------------------
                            uint req = MyCom.GetReceQueu();
                            //---------------------------------
                            if (req == 13)
                            {
                                byte[] r_Buf = new byte[13];
                                int num = MyCom.Read(ref r_Buf, 13);
                                tmp = "读到字符=" + num.ToString() + "\t";
                                for (int i = 0; i < num; i++)
                                    tmp += r_Buf[i].ToString("X2");
                                MyCom.ClearReceiveBuf();
                            }
                            else
                                tmp = "收到字符=" + req.ToString() + "\t";
                            tmp += "\t耗时=" + allTime + "\r\n";
                            //下面这句,莫名其妙执行了两遍!!                           

                            txtRc.BeginInvoke(new Action(() => txtRec.Text += tmp));
                            break;
                        }
                        case EV_ERR:
                        {     break;  }
                    }//switch(ComMask) end
                }//if(ComMask>0) end
            }//While(rec_sw) end
        }

网址:控件的.BeginInvoke(new Action(() =>...))语句被执行了两遍? https://www.yuejiaxmz.com/news/view/943785

相关内容

Thread问题,单线程,单线程与UI线程
Python2语法简记(4、5):条件语句、循环语句
自动化测试工具第三章 qp高级使用.ppt
毕业设计,基于语音控制的智能家居控制系统
经典String str = new String(“abc”)创建了几个对象?(转)
python中的print()语句中的end=''是什么意思
给DropDownList 控件加上“==请选择==”选项
关于生活哲理的英文语句110句
英语谚语大全
英文版心灵鸡汤经典语录(精选125句)

随便看看