2

我正在开发一个读取和编辑 xml 文件但使用 XDocument 类 Load() 和 Save() 方法的应用程序。如果另一个应用程序或我的应用程序的另一个实例正在运行,那么一个文档可能会覆盖另一个在内存中所做的更改 xdocument 没有持续更新(重新加载)。同时运行的程序永远不会同时编辑 xml 文件的同一部分。解决此问题的最佳方法是什么?我应该在进行每次更改之前立即执行 Load 还是有更优雅的方法?

4

2 回答 2

3

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

使用(小)数据库。

在多用户情况下使用任何类型的文本文件都非常困难,而且只有在您有固定长度和(因此)固定位置记录(行)的情况下才能使用不同部分的文本文件。XML 不提供此功能。

进行编辑前加载只会使问题出现的频率降低。更改总是有可能丢失,您将在文件系统级别遇到竞争条件。要使其工作,您必须使用带有锁定文件的方案。为此,您将需要一个额外的文件。

于 2010-11-22T23:11:34.120 回答
0

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

于 2010-11-22T23:20:59.807 回答