Dosya kilidi açılana kadar bekleyin .NET
Bir dosya kilitli ve okumak için erişilebilir ve yeniden adlandırma kadar bir iş parçacığı engelleme en basit yolu nedir? Örneğin, orada bir WaitOnFile() yerde .NET Çerçeve?
Bir FileSystemWatcher FTP bir site, ama aktarılacak olan dosyaları aramak için kullandığı bir hizmeti vardosya oluşturulmuşdiğer işleminden önce olayı harekete dosya yazma işlemi bittikten.
İdeal çözüm iplik sonsuza kadar vazgeçmeden önce açılmıyor yani bir zaman aşımı süresi var.
Edit: bazı çözümler aşağıda denedikten Sonra o kadar değişen sona erdisistemtüm dosyalar için yazdı Path.GetTempFileName(), o zaman son konumuna File.Move() yapıldı. FileSystemWatcher olay kovduğunda, dosya zaten tamamlanmıştı.
CEVAP
Bu related question verdiÄŸim cevap ÅŸuydu:
/// <summary>
/// Blocks until the file is not locked any more.
/// </summary>
/// <param name="fullPath"></param>
bool WaitForFile(string fullPath)
{
int numTries = 0;
while (true)
{
numTries;
try
{
// Attempt to open the file exclusively.
using (FileStream fs = new FileStream(fullPath,
FileMode.Open, FileAccess.ReadWrite,
FileShare.None, 100))
{
fs.ReadByte();
// If we got this far the file is ready
break;
}
}
catch (Exception ex)
{
Log.LogWarning(
"WaitForFile {0} failed to get an exclusive lock: {1}",
fullPath, ex.ToString());
if (numTries > 10)
{
Log.LogWarning(
"WaitForFile {0} giving up after 10 tries",
fullPath);
return false;
}
// Wait for the lock to be released
System.Threading.Thread.Sleep(500);
}
}
Log.LogTrace("WaitForFile {0} returning true after {1} tries",
fullPath, numTries);
return true;
}

Ne kadar büyük bir MS SQL ithal ediyor...
S3 tüm dosya izinlerini bir kerede aya...
Nasıl dosya kilidi kontrol etmek için?...
Metinden EOF son satırı tekrarlar kada...
Ne kadar OLUMSUZLUK destek fasulye dos...