可能重複:
Wait until file is unlocked in .NET如何使用FileSystemWatcher檢查文件是否被另一個進程鎖定?
我有很多情況下,一個程序必須等待,直到一個文件被其他進程解鎖(例如文件複製),然後纔可以再次使用。一個標準的解決方案是等待它使用Thread.Sleep()循環迭代。我不認爲那種很好。我讀過它可以用.NET的FileSystemWatcher(我使用C#)來完成。任何人都可以說明嗎?非常感謝您的回覆!
可能重複:
Wait until file is unlocked in .NET如何使用FileSystemWatcher檢查文件是否被另一個進程鎖定?
我有很多情況下,一個程序必須等待,直到一個文件被其他進程解鎖(例如文件複製),然後纔可以再次使用。一個標準的解決方案是等待它使用Thread.Sleep()循環迭代。我不認爲那種很好。我讀過它可以用.NET的FileSystemWatcher(我使用C#)來完成。任何人都可以說明嗎?非常感謝您的回覆!
FileSystemWatcher顧名思義,可以讓你看當你change
,create
,delete
,rename
文件或文件夾
不能使用FileSystemWatcher
檢查,如果該文件被鎖定發生的任何事件..
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;
}
}
現在的問題是如何能夠回到調用線程?
您可以查看我給出的答案您自己的原始問題是: http://stackoverflow.com/a/42782410/6754146 –
沒有。 FileSystemWatcher不會告訴你何時發佈文件句柄。 –
但是,如果創建了文件,它會觸發一個確定的事件。難道這不能解決我的問題嗎? – relapse
正在解鎖的文件與正在創建的文件不同。 – xpda