2013-01-25 96 views
0

可能重複:
Wait until file is unlocked in .NET如何使用FileSystemWatcher檢查文件是否被另一個進程鎖定?

我有很多情況下,一個程序必須等待,直到一個文件被其他進程解鎖(例如文件複製),然後纔可以再次使用。一個標準的解決方案是等待它使用Thread.Sleep()循環迭代。我不認爲那種很好。我讀過它可以用.NET的FileSystemWatcher(我使用C#)來完成。任何人都可以說明嗎?非常感謝您的回覆!

+0

沒有。 FileSystemWatcher不會告訴你何時發佈文件句柄。 –

+0

但是,如果創建了文件,它會觸發一個確定的事件。難道這不能解決我的問題嗎? – relapse

+1

正在解鎖的文件與正在創建的文件不同。 – xpda

回答

2

FileSystemWatcher顧名思義,可以讓你當你changecreatedeleterename文件或文件夾

不能使用FileSystemWatcher檢查,如果該文件被鎖定發生的任何事件..

0
FileSystemWatcher _watcher; 
int _watcherEventFiredCounter; 

_watcher = new FileSystemWatcher { 
    Path = @"C:\temp", 
    NotifyFilter = NotifyFilters.LastWrite, 
    Filter = "*.zip", 
    EnableRaisingEvents = true 
}; 

_watcher.Changed += OnChanged; 


private void OnChanged(object sender, FileSystemEventArgs e) 
{ 
    _watcherEventFiredCounter++; 
    // The event is fired two times: on start copying and on finish copying 
    if (_watcherEventFiredCounter == 2) { 
     Console.WriteLine("Copying is finished now!"); 
     _watcherEventCounter = 0; 
    } 
} 

現在的問題是如何能夠回到調用線程?

+0

您可以查看我給出的答案您自己的原始問題是: http://stackoverflow.com/a/42782410/6754146 –

相關問題