首页 新闻 会员 周边 捐助

XmlDocument.Save ,XML文件没写完的问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2009-12-01 14:38

用 XmlDocument.Save保存文件,写的过程中系统被中止

结果xml文件只写了一半就退出了,导致该文件不能被读取,请问有什么方法可以避免

问题补充: 补充一下: 这应该是文件系统的事务性问题,也反编译过微软的相关代码,没找到太好的解决方案 这个是一段代码 @Kolor:下面是一个代码实例 public void Remove(string id) { lock (SaveLock) { Console.WriteLine("Delete id = {0}", id); var nodes = from el in _doc.Element("Root").Elements("Strinfo") where string.IsNullOrEmpty(id) ? true : (null != el.Attribute("ID") && el.Attribute("ID").Value.Contains(id)) select el; foreach (XElement _xe in nodes.ToList<XElement>()) { _xe.Remove(); } Save(); } } private static void Save() { Console.WriteLine("Save XML DOC"); using(StreamWriter _writer = new StreamWriter(XmlDoc)) { _writer.AutoFlush = true; _doc.Save(_writer, SaveOptions.None); } }
lisw的主页 lisw | 菜鸟二级 | 园豆:313
提问于:2009-11-23 10:01
< >
分享
所有回答(1)
0

为什么不在写完后再Save,而是在写的过程中Save呢?

Kolor | 园豆:55 (初学一级) | 2009-11-24 13:52
无论何时Save都会存在这个问题,况且总得有个时机将数据存到文件中
支持(0) 反对(0) lisw | 园豆:313 (菜鸟二级) | 2009-11-24 16:56
写完后再Save,没问题的,我一直这么做,没出现过你说的问题。你可以贴出你的代码吗?
支持(0) 反对(0) Kolor | 园豆:55 (初学一级) | 2009-11-24 17:30
因为没有Save的事件可以触发,只能每次change都保存
支持(0) 反对(0) lisw | 园豆:313 (菜鸟二级) | 2009-11-25 10:52
@lisw: 操作xml胡不只Remove这个方法吧,其它的也加了lock (SaveLock)了吗?
支持(0) 反对(0) Kolor | 园豆:55 (初学一级) | 2009-11-25 21:10
@Kolor:锁肯定都有的
支持(0) 反对(0) lisw | 园豆:313 (菜鸟二级) | 2009-11-26 10:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册