UWP - RandomAccessStream завершается при изменении файла - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь прочитать содержимое файла, пока добавляются новые строки.Для этого у меня есть следующий код:

using (var inputStream = await file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowOnlyReaders))
        using (var streamReader = new StreamReader(inputStream.AsStream()))
        {
            string line;
            while ((line = streamReader.ReadLine()) != null)
            {
            }
            streamReader.Close();
            inputStream.Dispose();
        }

Проблема в том, что как только файл изменяется, входной поток имеет размер 0 и цикл завершается.

Как мнеобойти это?

1 Ответ

0 голосов
/ 30 мая 2018

Для тех, у кого такая же проблема, похоже, это работает.

Важной частью является переменная oldsize.Вам нужно иметь предложение if, иначе оно не будет работать.

using (var randAccessStream = await file.OpenAsync(FileAccessMode.Read, StorageOpenOptions.AllowReadersAndWriters))
        using (var inputStream = randAccessStream.AsStream())
        using (var streamReader = new StreamReader(inputStream))
        {
            var oldsize = randAccessStream.Size;
            string line;
            while ((line = streamReader.ReadLine()) != null)
            {
                if (oldsize != randAccessStream.Size) //Useless but seems to fix the bug
                {
                    oldsize = randAccessStream.Size;
                    await Task.Delay(100);
                }
            }

            await inputStream.FlushAsync();
            streamReader.Close();
            inputStream.Dispose();
            randAccessStream.Dispose();
        }
...