.فايلات شبيهة و مغلقة...
حسنا, هل يمكن لأي شخص أن يشرح لماذا أستطيع ' أن أتأكد بوضوح إذا كان بإمكاني قفل ملف قبل القراءة منه FileSystemWatcher لتنتظر أن يتم إنشاء الملفات في مجلد قبل تشغيل الوظيفة - حسناً ولكن لا يبدو أن هناك طريقة سهلة للتأكد من أن الملف ' قابل للقراءة | ' | قبل البدء بقراءة FileStream ونلتقط الخطأ الذي يرمونه عندما يتم قفل الملف بواسطة عملية أخرى..مسك0..مثل ذلك.. مسك1..لكن هذا لا يبدو حقاً.. ومسك2.. لا أشعر بالشكل الصحيح.. لمسك3.. أنا خائف من فكرة استخدام الاستثناءات.. المسك4..التي أيضاً بطيئة جدًا.. للمسك5.. لتلك الأنواع من المهام.. والمسك6..لماذا لا..المسك7..لا تتدفق الملفات..امسك8..يمكن قراءة إختبار المفاتيح قبل فتح الملف..
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;
}
}
}