我正在开发一个应用程序,它读取并编辑xml文件,但使用XDocument类Load()和Save()方法。如果另一个应用程序或我的应用程序的另一个实例正在运行,那么一个文档可能会覆盖另一个文档,如果它在内存xdocument中没有不断更新(重新加载)。同时运行的程序永远不会同时编辑xml文件的同一部分。解决这个问题的最佳方法是什么?我应该在做出每一个改变之前做一个Load,还是有更优雅的方法?
答案 0 :(得分:3)
最好的解决方案是不使用XML。
使用(小)数据库。
在多用户情况下使用任何类型的文本文件都很困难,并且如果您有固定长度和(因此)固定位置记录(行),则它对不同部分的事实只能使用。 XML没有提供这个。
执行加载前编辑只会减少问题的出现次数。总是有可能会丢失更改,您将在文件系统级别拥有竞争条件。要使其工作,您必须使用带锁定文件的方案。你需要一个额外的文件。
答案 1 :(得分:0)
您正在谈论能够修改文件的多个进程。如果要保留文件而不是将数据放入公用存储(MS SQL),则需要实现一个互斥锁,以确保只有一个应用程序可以随时访问文件。