如何使用FileSystemWatcher检查文件是否被另一个进程锁定?

时间:2013-01-25 06:59:03

标签: c# .net filesystemwatcher

  

可能重复:
  Wait until file is unlocked in .NET

在很多情况下,程序必须等到文件被另一个进程解锁(例如正在复制的文件)才能再次使用。标准解决方案是使用Thread.Sleep()等待循环迭代。我不认为那么好。我已经读过它可以用.NET的FileSystemWatcher(我用C#)来做。有人可以说明吗?非常感谢您的回复!

2 个答案:

答案 0 :(得分:2)

FileSystemWatcher顾名思义,让您观看,了解changecreatedelete,{{ 1}}文件或文件夹

您无法使用rename检查文件是否已锁定..

答案 1 :(得分: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;
    }
}

现在的问题是如何回到调用线程?