StorageFile在文件被另一个进程使用时读取内容

时间:2016-05-26 16:19:56

标签: c# windows-store-apps file-storage

目前我正在使用MetroLog。它使用文件流将信息记录到日志文件中。

是否有可能在MetroLog的文件流使用时读取StorageFile的内容

using (var randomAccessStream = await localFile.OpenReadAsync())
{
   ...
}

此代码将导致Access Denied异常。该文件存在,看起来它具有正确的权限,因为如果我禁用日志记录它可以工作。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我的解决方案如下(我的所有代码都放在设备实现中,而不是放在pcl中):

在Metrolog初始化时,保存Streaming文件目标以供以后使用:

private static StreamingFileTarget _target;
...
LogManagerFactory.DefaultConfiguration.AddTarget(LogLevel.Trace, LogLevel.Fatal, _target);

在打开/读取Metrolog的当前日志文件之前,关闭文件目标的所有打开文件:

await _target.CloseAllOpenFiles();
your code...

将在下一个日志命令中再次打开当前日志文件。