Metro StorageFile多线程文件日志记录

本文关键字:日志 记录 文件 多线程 StorageFile Metro | 更新日期: 2023-09-27 18:00:35

处理对StorageFile对象的多线程文件访问的正确方法是什么?

在创建了StorageFile之后,我使用FileIO.AppendTextAsync对其进行写入。

这是可行的,但一旦多个线程调用FileIO.AppendTextAsync,我就会收到拒绝访问错误——可能是因为以前对它的调用仍在运行。

我该如何处理这种情况?

Metro StorageFile多线程文件日志记录

我还没有找到完美的解决方案,但我找到了一个可行的解决方案。

  1. volatile关键字标记StorageFile(显著减少错误)
  2. 然后,我重构了一些不必要地从不同线程执行的代码(现在所有错误都消失了)

注意:为了达到预期的结果,必须同时执行1和2,因此我认为解决方案并不完美。

更新:有关更正确的解决方案,请参阅以下帖子:FileIO多线程