• Почему программа на С# при параллельном чтении одного и того же файла другой программой тихо завершается?

    @fill_n Автор вопроса
    Да, когда я делал вторую программу, которая читает данные (написана на Blazor) из того же файла, который в этот момент может записываться, я подозревал, что могут быть проблемы. Я лишь надеюсь, что решить это будет проще, чем переписывать все в одну программу, чем переходить на базу данных, чем читать данные из контроллеров
    параллельно и писать отдельные для каждой программы файлы.
    Просто первая программа, на WPF, работает только на одном компьютере, либо нужен удаленный доступ для работы с ней. Вторая программа - на .NET 5.0 Blazor, она позволяет просматривать данные по локальной сети через браузер.
  • Почему программа на С# при параллельном чтении одного и того же файла другой программой тихо завершается?

    @fill_n Автор вопроса
    Потому что одна программа пишет файл, а другая просто читает его. То есть первая программа, которая пишет в файл - была написана первой. Она считывает показания датчиков с контроллеров и сохраняет их в файл. Может показывать данные (читать их из файла). Но с ней можно работать только с одного компьютера(либо удаленный доступ к компьютеру), написана на WPF. Вторая программа была написана позже на Blazor и ее цель - просто читать файлы показаний и отдавать их в браузер, чтобы можно было просматривать данные датчиков по локальной сети без удаленного доступа к компьютеру. Я подумал, что нету смысла двум программам читать одни и те же данные из контроллеров. Пускай вторая программа пользуется данными, которые собирает первая. При этом нужно просматривать актуальные показания. Нельзя ждать до завтра, пока первая программа создаст себе новый файл для записи.
    Я ничего не знаю про то, что этим можно разрушить файл.
    В пишущем потоке (первая программа, на WPF) происходит следующее:
    1. Читаются данные из файла в объект.
    2. В объект добавляются новые данные из датчиков.
    3. Обновленный объект пишется в файл. Файл либо заменяется, либо создается новый (зависит от текущей даты).
  • Почему программа на С# при параллельном чтении одного и того же файла другой программой тихо завершается?

    @fill_n Автор вопроса
    https://docs.microsoft.com/en-us/dotnet/api/system...
    Тут написано, что FileShare.ReadWrite: "Позволяет последующее открытие файла для чтения или записи. Если этот флаг не указан, любой запрос на открытие файла для чтения или записи (этим процессом или другим процессом) будет завершаться ошибкой до тех пор, пока файл не будет закрыт. Однако даже если этот флаг указан, для доступа к файлу могут потребоваться дополнительные разрешения."
    Поэтому наоборот, этот флаг позволяет другим процессам работать с файлом. Но почему-то это не помогает.
    Насчет пустых catch вы правы, надо было бы заполнить их и отслеживать ошибки.