Содержание файла перестает обновляться на общем ресурсе Windows - PullRequest
1 голос
/ 11 января 2012

У меня есть программа, которая (многократно) читает содержимое файла и, если поступают новые данные, выполняет некоторую обработку.Чтение довольно просто, что-то вроде

class Reader
{
    FileStream fs_ = null;
    StreamReader sr_ = null;

    Reader(string filename)
    {
        fs_= new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite | FileShare.Delete);
        sr_ = new StreamReader(fs_);
    }

    void Read()
    {
        string line;
        while (line = sr_.ReadLine())
        {
            // ...
        }
    }
}

Метод Read () опрашивается каждые 300 мс.Есть некоторый фрагмент кода, который закрывает и снова открывает файл в случае его переименования / удаления внешними субъектами.

Обычно это работает нормально, но иногда (я сталкивался с этим два раза в течение последнего месяца) странная вещьпоявляется.Файл на общем ресурсе сообщает правильную длину, но при попытке прочитать из него показывает половину строки и остаток файла с нулевым (0x00, а не '0') содержимым.Более того, я получил ту же картинку при попытке прочитать файл через любой внешний текстовый / бинарный редактор с того же компьютера, на котором размещалась моя программа.С других машин в сети файл читается без проблем и показывает полное содержимое.Проблема сохраняется, пока я не перезагружаю машину с моей программой.

Есть идеи, что происходит и как я могу это исправить?

...