做了一个监控平台。
保存实时数据用的是序列化(xml),大概是1秒种保存一次。XML本身并不大,几十 KB。
软件运行正常情况下或正常退出并不会有问题。但是,如果软件出现异常(由于系统),序列化出来的XML文件就会是0KB,下次运行的时候,加载实时数据就会没有。这是极端问题,但是的确出现过,大家有什么好的办法?
保存实时数据用的是序列化(xml),大概是1秒种保存一次。XML本身并不大,几十 KB。
软件运行正常情况下或正常退出并不会有问题。但是,如果软件出现异常(由于系统),序列化出来的XML文件就会是0KB,下次运行的时候,加载实时数据就会没有。这是极端问题,但是的确出现过,大家有什么好的办法?
解决方案 »
- serial port close时候会死机
- 在C#的应用程序中获取工程目录的路径,谢谢
- 一个很神经的问题!!向同志们求救!!!!!!!!!!!!
- 急!!!我在运行C#色时候总遇到同一个错误 请各位大哥帮帮忙!!!!
- 一个Datatable中的值,我想在一个DATALIST中显示两行,其他的显示在一个下拉框内,如何显示啊?
- 求救 如何将EXCEL另存为dbf (Dbase)文件?
- 求助:级联表求子集
- 不断移动Label的位置,字体却不断闪烁,怎么处理才不会?
- 请教.net实现分布式异构数据库事务
- 这些符号在vs.net2003.cs文件里面显示成?号
- 数据库查询,字段为空,查不出来
- 一个自定义格式文件,包含图片和文字
这个异常并一定是序列化出现的问题。try无法确定。
参考
www.cnblogs.com/mail-ricklee
想不通的是,如果出现Fatal异常了,程序不应该继续执行而生成异常文件。
而应该保护现场,提示错误,安全退出,减少异常的影响。
当然如果能定位异常发生的症结所在并对症下药才是真正的解决办法。
//TextWriter writer = new StreamWriter(this.SaveSerializePath);
TextWriter writer = new StreamWriter(tempxml);
ser.Serialize(writer, t);
writer.Close(); //----------------2011-02-14-------------------//
//----------------防止XML文件格式不对----------//
if (System.IO.File.Exists(tempxml))
{
bool valid=this.ValidateXML(tempxml);
if (valid)
{
System.IO.File.Copy(tempxml, this.SaveSerializePath, true);
} System.IO.File.Delete(tempxml);
}
//---------------------------------------------//[/align]
这样解决的。