C#串口通讯出现在 System.IO.IOException 中第一次偶然出现的“System.dll”类型的异常的解决办法

出现这样的错误,主要是在程序中加入了定时器,定时扫描串口的数据,然后在定时器的处理函数中对串口的数据进行逻辑处理。

这样就有问题了,如果逻辑处理未完成又读到了新的数据,那么就会报错,开始可能还没什么问题,但是累计的错误多了,就会死机了。

其实,处理这样错误的方法很简单,就是利用线程同步的技术。

private static readonly object _object = new object();
        bool _isFinished = true;
        private void m_timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                if (_isFinished)
                {
                    lock (_object)
                    {
                        if (_isFinished)
                        {
                            _isFinished = false;


                            #region content
                            
                            #endregion


                            _isFinished = true;
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return;
            }
        }

你可能感兴趣的:(.NET技术)