每当文件到达我的系统文件夹时,我都会使用 FileSystemWatcher 通知我。
有时,他们带着锁到达(通过其他程序)
我想执行如下操作:
如果即使在 TIMEOUT 之后它们仍然被锁定,我们会忽略该文件,或者如果它们在 TIMEOUT 内变为无锁,我们会处理该文件
我目前想出了这个解决方案,但想知道是否还有其他方法可以实现它。
lockedFilePaths = new List<string>();
NoLockFilePaths = new List<string>();
Watcher.Created += (sender, e) => WatcherHandler(e.FullPath);
WatcherHandler(string FilePath)
{
CheckFileAccess(FilePath);
if (NoLockFilePaths.Any())
{
//Process all file paths
}
}
CheckFileAccess(string filepath)
{
// start a timer and invoke every say 10ms
// log the locked time of the file.
// compare the current time.
// return null if TIMEOUT exceeds
// or wait till the TIMEOUT and keep on checking the file access
}
问题是如何简单优化地实现 CheckFileAccess?
我目前使用 System.Threading.Timer 每 1000 毫秒通知我一次,检查文件是否仍然被锁定,我的实现是否令我不满意。寻找一些超级简单实现的建议。