Гаразд, будь- хто може пояснити, чому я не можу явно перевірити, чи можу я заблокувати файл перед читанням з нього (тобто, перевірте, чи ніхто інший не блокує файл перед тим, як його прочитати). Я використовую чудовий файл FileSystemWatcher зачекати на створення файлів у каталозі перед запуском завдання - добре, але, здається, не є легким способом перевірити, що файл " придатний " до читання, перш ніж починати читання... зараз мій спосіб виконати це завдання - спробувати прочитати - і покласти блок для читання - на файл з використанням команди FileStream і зловити помилку, якщо файл було заблоковано іншим процесом... подібно до цього... але це не так. Я відмовляюся використовувати винятки (які також є дуже повільними) для цього завдання... чому не може FileStram. Чи може програма перевірити, чи немає замків B перед відкриттям файла???
private static int m_ReadAttempts = 0;
private string ReadFileFromDisk(string filePath)
{
try
{
if(!File.Exists(filePath))
{
MessageBox.Show("Sorry, but the file specified " + Environment.NewLine + filePath + Environment.NewLine + "Cannot be found");
return string.Empty;
}
using(FileStream fs = new FileStream(filePath,FileMode.Open,FileAccess.Read,FileShare.Read))
{
using(StreamReader sr = new StreamReader(fs))
{
string tmpStr = sr.ReadToEnd();
sr.Close();
m_ReadAttempts =0;
return tmpStr;
}
}
}
catch(IOException ex)
{
if(m_ReadAttempts < 10)
{
Thread.Sleep(500);
m_ReadAttempts++;
return ReadFileFromDisk(filePath);
}
else
{
throw ex;
}
}
}
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.