Watch Directory中的文件在使用DirectoryInfo时被锁定

时间:2011-02-28 05:15:41

标签: c# directoryinfo

我一直在监控网络目录中的文件。我最初使用FileWatcher来监控它们。我发现在使用FileWatcher时文件被锁定所以我改变了我的实现,使用DirectoryInfo来监视我正在观看的目录中新到达和删除的文件。似乎在使用DirectoryInfo时,watch目录中的文件也会被锁定,从而防止文件在下载文件后被其他应用程序删除。我的手表应用程序是一个Windows服务。

有人可以告诉我他们是否遇到过问题,如果他们有问题,你是如何解决的?

谢谢,

2 个答案:

答案 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