【发布时间】:2014-12-10 01:18:52
【问题描述】:
我有一个非常简单的问题,但在搜索了很多论坛后找不到答案。 我有一个 Windows 商店应用程序,它定期(使用计时器)将数据保存到 xml 文件中。有时,由于系统崩溃或应用程序被用户在两者之间或其他一些异常终止的情况下,xml 在保存过程中被破坏(尽管要保存的数据是有效的),这会导致很多不一致。我发现一篇文章提到将数据直接写入磁盘(使用 FileStream 的 FileOptions.WriteThrough 选项),但 Win 8 的 .NET 没有这些选项。 有没有办法确保在所有这些事件期间 xml 永远不会损坏并且数据被可靠地保存?我可以制作文件副本,但仍然想知道是否有其他可靠的方法来处理这个问题。
下面是在计时器中保存xml的代码:-
folder = await StorageFolder.GetFolderFromPathAsync(path);
stream = await folder.OpenStreamForWriteAsync(SystemConfiguration.TASK_XML,CreationCollisionOption.ReplaceExisting); serializer = new XmlSerializer(typeof(Tasks));
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
serializer.Serialize(xmlWriter,Global.UserTasks);
xmlWriter.Dispose();
}
stream.Dispose();
谢谢!
【问题讨论】:
-
您仍然可以将这些数据写入应用程序的文件夹中,无需任何特殊权限。
-
@Astro。是的 Astro,我只将数据保存在本地文件夹中,但在上述情况下 xml 仍然损坏。
-
您需要阻止用户在您的流写入文件时终止应用程序?
-
虽然这是一个更简单的场景(阻止用户终止应用程序),但由于操作系统错误/崩溃行 BOD,我无法阻止系统崩溃/重新启动。
标签: c# windows-store-apps xmlwriter