Вы обнаруживаете это по IOException, которое вы получаете, когда пытаетесь открыть файл.Это неизбежное зло в многозадачной операционной системе, потому что нет надежного способа реализовать метод File.IsLocked ().Windows не имеет функции API для этого.Потому что, если такая функция возвращает false, другой процесс может прервать вашу программу и заблокировать файл.Когда вы вернете процессор, вы обнаружите, что файл все равно заблокирован.Это называется многопоточность.
Итак, откройте файл, скажем, конструктором FileStream.Передайте FileShare.ReadWrite, если вы хотите читать из файла, который записывается другим процессом.Вы должны разрешить совместное использование ReadWrite, другой процесс уже получил право на запись.Ловите IOException, которое вы можете получить, вам придется повторить попытку «позже».Расскажите об этом пользователю, она, вероятно, будет знать, что делать, чтобы помочь вам.Как и при закрытии другой программы.
Кстати, Windows не предоставляет никакого способа узнать, какой другой процесс заблокировал файл.Для этого есть утилиты, такие как утилита SysInterals 'Handle.Он обрабатывает недокументированные внутренние структуры ядра с динамически устанавливаемым драйвером устройства.Ничего, что бы ты хотел решить сам.