我工作的一个应用程序,将让工作运行指数造诣。改写快速连续相同的文件?
我可以在工作会议结束时写一次,但是我不想冒险失去数据,如果事情炸毁。因此,我重写到磁盘(XML),每一个新的条目或修订是由用户制作时间。
private void WriteIndexFile()
{
XmlDocument IndexDoc
// Build document here
XmlTextWriter tw = new XmlTextWriter(_filePath, Encoding.UTF8);
tw.Formatting = Formatting.Indented;
IndexDoc.Save(tw);
}
有可能快速连续触发写操作。如果发生这种情况,它会尝试打开该文件编写前先写操作完成。 (虽然它不会是正常的,我想这是可能的文件被打开,以供其他程序。)
我如何检查文件是否可以重新写的?
编辑澄清:这是自动化实验室数据收集系统的一部分。用户将点击一个按钮来捕获数据(保存在单独的文件中),并确定数据包的子任务。通常,点击之间的时间为3-10分钟。
如果他们做出了错误,他们需要能够回去并纠正它,所以它不是一个只追加使用率。
最后,该文件会被其他的自动化工具和手动人类阅读。 (XML/XSLT)
尺寸会受到限制,因为每个工作会议(工人移位或更小)将具有产生新的索引文件。
进一步的问题:作为压倒性的共识是不使用XML,并在仅附加模式写,我会怎么解决回去和纠正早期项目的要求?
我正在考虑有一个“脏”标志,标志设置后保存几分钟后关闭工作会议。如果在此期间发生多个编辑,则只会发生一次写入 - 没有更快的用户 - 如果保存失败,也会有重试/取消对话框。思考?
当写入失败时你打算做什么?向用户报告并撤消?没有写会阻碍你继续下去? – 2010-01-29 21:09:18
@Moron:这确实是主要问题。如果失败可以从优雅地恢复并且写作恢复,那么它是可以的。如果故障无法恢复(即某些其他未知应用将文件或磁盘锁定为已满),则继续丢失数据将是一种损失。 也许重试/取消对话框...? – mbmcavoy 2010-01-29 21:59:50