C#串口通讯出现在 System.IO.IOException 中第一次偶然出现的“System.dll”类型的异常的解决办法
2014-11-29 18:58
363 查看
出现这样的错误,主要是在程序中加入了定时器,定时扫描串口的数据,然后在定时器的处理函数中对串口的数据进行逻辑处理。
这样就有问题了,如果逻辑处理未完成又读到了新的数据,那么就会报错,开始可能还没什么问题,但是累计的错误多了,就会死机了。
其实,处理这样错误的方法很简单,就是利用线程同步的技术。
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;
}
}
这样就有问题了,如果逻辑处理未完成又读到了新的数据,那么就会报错,开始可能还没什么问题,但是累计的错误多了,就会死机了。
其实,处理这样错误的方法很简单,就是利用线程同步的技术。
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;
}
}
相关文章推荐
- NPOI 在 System.IO.FileNotFoundException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 【ASP.NET】System.Threading.ThreadAbortException中第一次偶然出现的“mscorlib.dll”类型的异常
- 在 System.InvalidOperationException 中第一次偶然出现的“System.Xml.dll”类型的异常
- 在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 第一次偶然出现的“System.Data.Entity.dll”类型的异常
- C# 异常 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 在 System.Security.SecurityException 中第一次偶然出现的“System.Runtime.Serialization.dll”类型的异常
- 在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常(转)
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 在 System.Security.SecurityException 中第一次偶然出现的“System.Runtime.Serialization.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常
- 关于--在 System.Threading.ThreadAbortException 中第一次偶然出现的“mscorlib.dll”类型的异常(转)
- 在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常
- 在 System.FormatException 中第一次偶然出现的“mscorlib.dll”类型的异常,如何调试呢。