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