我一直在监控网络目录中的文件。我最初使用FileWatcher来监控它们。我发现在使用FileWatcher时文件被锁定所以我改变了我的实现,使用DirectoryInfo来监视我正在观看的目录中新到达和删除的文件。似乎在使用DirectoryInfo时,watch目录中的文件也会被锁定,从而防止文件在下载文件后被其他应用程序删除。我的手表应用程序是一个Windows服务。
有人可以告诉我他们是否遇到过问题,如果他们有问题,你是如何解决的?
谢谢,
答案 0 :(得分:1)
您确定创建/更新文件的内容是否已完成?如果没有,该文件将被锁定。
答案 1 :(得分:0)
即使FileWatcher应该使用UNC共享,我也遇到了很多问题。由于你的问题不是时间关键的,我会创建一个只检查文件是否存在的线程,在几秒钟内停留循环,直到文件消失,此时你的警报就会被发送。
注意:作为服务运行也要求正在运行的用户也拥有远程共享的网络权限。
更新:刚刚对我们的网络进行了快速测试。运行Windows 2008 R2的Windows 7服务器的客户端。添加了几个小文件和大文件。在代码运行时删除文件没有任何问题。即使没有Thread.Sleep
bool filesDeleted = false;
while (!filesDeleted)
{
DirectoryInfo di = new DirectoryInfo(@"\\server\share\path\");
FileInfo[] files = di.GetFiles();
foreach (var file in files)
{
DateTime created = file.CreationTime;
string fileName = file.Name;
//Do what every you need to check if the two files are still there
}
Thread.Sleep(5000);
}
//Send alert