В событии таймера, упомянутом в другом ответе, я ожидаю, что вы захотите прочитать файл каждый раз, даже если какой-то другой процесс в настоящее время блокирует файл.
Но если вы не будете принимать меры предосторожности, вы получите исключение, когда файл используется.Конечно, вы можете поймать это исключение, но вам нужно будет просто подождать несколько секунд, прежде чем пытаться снова.Если файл все еще заблокирован, вам может потребоваться реализовать некоторый механизм тайм-аута.
Если это не то, что вам нужно, другой подход, который поддерживает чтение (возможно) заблокированных файлов, заключается в использовании FileStream объект, созданный с параметром FileShare.ReadWrite:
// Inside your timer event.
using (System.IO.FileStream fs = new System.IO.FileStream("yourfile.log",
System.IO.FileMode.Open, System.IO.FileAccess.Read,
System.IO.FileShare.ReadWrite))
{
// use fs to read from file as required
}