StorageFile читает содержимое, пока файл используется другим процессом

В настоящее время я использую MetroLog. Он использует файловый поток для записи информации в файл журнала.

Есть ли возможность прочитать содержимое StorageFile, пока оно используется файловым потоком MetroLog?

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

этот код вызовет исключение Access Denied. Файл существует, и похоже, что он имеет правильные права, потому что он работает, если я отключу ведение журнала.


person hwcverwe    schedule 26.05.2016    source источник


Ответы (1)


У меня такая же проблема. Мое решение следующее (весь мой код размещен в реализации устройства, а не в pcl):

При инициализации Metrolog сохраните целевой файл Streaming для последующих целей:

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

Закройте все открытые файлы целевого файла, прежде чем открывать/читать текущий файл журнала Metrolog:

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

Текущий файл журнала будет снова открыт при следующей команде журнала.

person Karin Lorenz    schedule 25.01.2017