2 anzaizly anzaizly 于 2014.03.24 21:10 提问

读取串口数据添加了一个TimeoutException异常处理方法,出现了dll异常

报错信息:
在 System.TimeoutException中第一次偶然出现的"System.dll"类型异常。
之后程序就不在接收数据了,也不出现程序报错,必须重新启动程序,才能继续接收数据。
错误一般会在程序运行1天之后出现假死现象。是不是因为我只是把错误信息记下来了,并没有进行错误处理?我的逻辑是,错误之后,丢弃这一组数据,然后重新进行数据接收。
跪求,本人无法解觉了现在。
相关代码:
//开始接收
public void StartReceive()
{
int temp = 0;
while (true)
{
try
{
temp = sp.ReadByte();
}
catch (TimeoutException ex)
{
LogTool.WriteEduAppLog(ex.Message, ex.StackTrace);
}
}
//将报错相关信息写入本地的log文档
public class LogTool
{
//当前程序的日志文件目录
static string strAppLofDir = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "logInfo.txt";
public static void WriteEduAppLog(string ErrorReason, string StackTrace)
{
WriteLog(ErrorReason, StackTrace, "EduApp.log");
}
private static void WriteLog(string ErrorReason, string StackTrace, string logFileName)
{
//判断有没有日志目录,没有就创建
DirectoryInfo directoryInfo = new DirectoryInfo(strAppLofDir);
if (!directoryInfo.Exists)
directoryInfo.Create();
StringBuilder logInfo = new StringBuilder("");
string currentTime = System.DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss]");
logInfo.Append("\n").Append(currentTime).Append(":").Append(ErrorReason).Append("\n").Append(StackTrace);
System.IO.File.AppendAllText(strAppLofDir + logFileName, logInfo.ToString());
}
}

1个回答

ZR__MaNong
ZR__MaNong   2014.12.26 09:53

楼主 这是C#的一些项目实例代码 你可以参考一下
http://download.csdn.net/album/detail/1361

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
TimeoutExceptions的问题解决
今年10月份以后我们产品线的crash平台莫名出现了大量的TimeoutExceptions,crash的路径页面全部为空,log日志里面有多次的gc操作;一开始以为是网络请求方面的问题导致的,然后仔细排查了工程代码,也没有发现可以点。这个问题一直悬了将近3个月,直到最近crash率超高红线,开始重视此问题,四处请教大神,终于找到了解决方案。国内手机厂商真是非常不负责,ROM随便改。 下面直接给
串口数据异常,数据段获取到两段或者三段
/**串口数据初始化了两次,出现了本来是一段数据的,却获取到几段被分割的数据**/ package chuankou; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; import ja
串口关闭时候报错、死锁、还有数据在处理报串口关闭错误 解决办法
为什么C#串口程序在关闭串口时候会死锁_老文章_赛迪网 http://www.ccidnet.com/2010/0524/2067861.shtml 【赛迪网讯】用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁。天哪,我可不是武断,算了。不要太绝对了。99.9%的人吧,都遇到过这个问题。我想只有一半的人真的解决了。另外一半的人就睁只眼闭只眼阿弥佗佛
常见的异常产生的原因和解决办法
一、数组越界异常 Java.lang.ArrayIndexOutofBoundsException 产生的原因:访问了不存在的索引 解决的办法:索引0到数组长度-1的范围内取值 二、空指针异常 Java.lang.NullPointerException 产生的原因:对象没有创建就访问了元素或者方法或者属性 解决的办法:先找出出现的所有引用类型,判断哪个对象是没有new的元素或者方法
C#编程中遇到的一些异常及部分异常的解决方法
以下内容是在本人在C#编程中遇到的异常,针对部分异常给出了解决办法,但是此解决方法是否真的好用,有待进一步考证,仅供参考。 (1)“System.Invalid Operation Exception”类型的未经处理的异常,出现在System.Windows.Forms.dll中,其他信息:在创建窗口的句柄前,不能在控件上调用Invoke或                BeginInvoke。
C#串口通讯出现在 System.IO.IOException 中第一次偶然出现的“System.dll”类型的异常的解决办法
出现这样的错误,主要是在程序中加入了定时器,定时扫描串口的数据,然后在定时器的处理函数中对串口的数据进行逻辑处理。 这样就有问题了,如果逻辑处理未完成又读到了新的数据,那么就会报错,开始可能还没什么问题,但是累计的错误多了,就会死机了。 其实,处理这样错误的方法很简单,就是利用线程同步的技术。 private static readonly object _object = new obje
arm-linux串口接收出错
在一帧数据的接收中,一帧数据,会被分两次接收,如下:第一次接收一部分,第二次接收一部分; recv  data   from downline:   0x66   0x17   0x0   0xc1   0x0   0x1   0x0   0x0   0x0   0x0   0x11   0x1   0x0   0x0   0x1   0x41   0x33   0x0   0x1   0x0
c#程序不弹出timeout异常手动关闭,自动重启
写了一个数据库自动同步数据的c#窗体程序,需要程序一直运行下去。 但是发现,对于数据库操作,即使在程序可能会发生异常的所有地方都防止try catch finally语句还是时不时的弹出timeout异常。这个时候就要人介入,点击退出再重启程序。这种方式肯定不行。 后台查了些资料,这样处理的,在Program.cs文件的Main函数里处理应用程序重新启动: static void M
异常处理 ppt java
异常和异常处理的两种方法 Java的异常类 Java的异常处理方法 异常的抛出和处理 自定义的异常类
C#下串口通讯超时优化类
一直以来就想实现一个功能,串口通讯