0

可能重复:
等到文件在 .NET 中解锁

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

4

2 回答 2

2

FileSystemWatcher顾名思义,可让您监视文件或文件夹时发生的任何事件changecreatedeleterename

你不能FileSystemWatcher用来检查文件是否被锁定..

于 2013-01-25T07:11:28.457 回答
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;
    }
}

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

于 2013-01-25T15:32:17.520 回答