2010-11-22 106 views
2

我正在研究一个应用程序,该应用程序读取并编辑xml文件,但使用XDocument类Load()和Save()方法。如果另一个应用程序或我的应用程序的另一个实例正在运行,那么一个文档可能会覆盖另一个文档在内存中所做的更改,而xdocument并未持续更新(reLoading)。同时运行的程序不会同时编辑xml文件的同一部分。解决这个问题的最好方法是什么?我应该在做任何改变之前做一个Load吗?还是有更优雅的方法?同时编辑C#中的xml文件

+0

你可以在编辑时锁定文件,也可以使用单个文件实例? – genericuser 2010-11-22 23:11:19

+1

@Priyaya10单实例不保证线程安全。 – dexter 2010-11-22 23:18:43

回答

3

最好的解决方案不是使用XML。

使用(小)数据库。

在多用户情况下使用任何类型的文本文件都非常困难,而且对于不同部分的事实只有在固定长度和(因此)固定位置记录(行)才能用于盈利, 。 XML不能实现这一点。

在编辑之前执行加载操作只会使问题出现频率降低。总会有变化失去的机会,你将在文件系统级别上有竞争条件。为了使它工作,你必须使用锁定文件的方案。你将需要一个额外的文件。

0

您正在讨论可以修改文件的多个进程。如果您想保留文件而不是将数据放入公共存储区(MS SQL),则需要实施互斥锁以确保只有一个应用程序可以随时访问文件。