做了一个监控平台。
保存实时数据用的是序列化(xml),大概是1秒种保存一次。XML本身并不大,几十 KB。
软件运行正常情况下或正常退出并不会有问题。但是,如果软件出现异常(由于系统),序列化出来的XML文件就会是0KB,下次运行的时候,加载实时数据就会没有。这是极端问题,但是的确出现过,大家有什么好的办法?
保存实时数据用的是序列化(xml),大概是1秒种保存一次。XML本身并不大,几十 KB。
软件运行正常情况下或正常退出并不会有问题。但是,如果软件出现异常(由于系统),序列化出来的XML文件就会是0KB,下次运行的时候,加载实时数据就会没有。这是极端问题,但是的确出现过,大家有什么好的办法?
解决方案 »
- 请问,outlook另存为的.msg文件如何读取?
- wpf 里的 popup 的属性 AllowsTransparency 有什么用啊
- 书上的程序,为什么会提示错误
- 有没有 C# 读EXE PE的类库?
- .net TextBox 或者 RichTextBox 显示立方米 立方吨的问题
- cs结构的软件如何保存一些用户信息?
- 制作的程序,在客户机上运行不正常
- 请问如何在代码里正确建立一个Access数据库文件?问题解决就结帖!在线等……
- 问一个关于控件显示的问题。
- 用MySQL Connector Net 连接mariadb不能查询中文
- 数据库查询,字段为空,查不出来
- 一个自定义格式文件,包含图片和文字
这个异常并一定是序列化出现的问题。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]
这样解决的。