问题描述
我使用.NET v3.5 Compact Framework在C#中为移动设备开发应用程序。我目前有两个程序,供用户用来读取或写入数据(或来自)和XML文件。问题是当我尝试从两个程序中的任何一个打开文件时,然后尝试使用其他程序操作该文件。
发生了什么事?
两个程序正在读取和解析XML文件。那时,它们成为记忆中的两个独立实体。这两组数据都在程序运行中的某个时刻发生了变化。程序#1保存更改。程序#2也保存更改,但不会有程序#1的更改。
我该怎么办?有什么建议???
我在如何解决这个问题上需要帮助。我应该将这两个程序合并到同一个解决方案中吗?我应该如何处理两个独立的程序来操作同一个文件并更新彼此的数据?
答案 0 :(得分:1)
a)只要一个进程访问该文件进行写入,就使用一个单独的锁文件 b)使用一个新进程,它是xml的唯一接口。使用一些进程间技术来管理xml的数据(即使用套接字)。 c)不再使用xml获取数据,而是使用像SQLite这样的多用户和事务数据库系统。
我会选择c)
答案 1 :(得分:0)
定期检查文件(在应用程序获得输入焦点时,或在计时器上,或在覆盖文件之前),以查看内容是否已更改。如果是这样,程序将需要重新加载文件并将更改与内存中的活动实体合并。冲突可能是可能的(即另一个程序已经改变了一个已被程序更改的实体的一部分),因此您需要检查这些并执行相应的操作,无论是警告用户还是仅允许更新改变申请。
检测更改的最佳方法取决于数据的结构方式以及是否可以唯一标识XML文件的元素。不幸的是,如果您还没有编写比较代码,那么这可能不是一项简单的任务。