在很多情况下,程序必须等到文件被另一个进程解锁(例如正在复制的文件)才能再次使用。标准解决方案是使用Thread.Sleep()等待循环迭代。我不认为那么好。我已经读过它可以用.NET的FileSystemWatcher(我用C#)来做。有人可以说明吗?非常感谢您的回复!
答案 0 :(得分:2)
FileSystemWatcher顾名思义,让您观看,了解change
,create
,delete
,{{ 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;
}
}
现在的问题是如何回到调用线程?