0

我一直在监视网络目录中的文件。我最初使用 FileWatcher 来监视它们。我发现在使用 FileWatcher 时文件被锁定,因此我将实现更改为使用 DirectoryInfo 来监视我正在监视的目录中新到达和删除的文件。似乎在使用 DirectoryInfo 时,监视目录中的文件也被锁定,从而防止文件在下载文件后被另一个应用程序删除。我的手表应用程序是 Windows 服务。

谁能告诉我他们是否遇到过问题,如果遇到过,您是如何解决的?

谢谢,

4

2 回答 2

1

您确定创建/更新文件的任何操作都已完成吗?否则,文件将被锁定。

于 2011-02-28T06:12:43.153 回答
0

尽管 FileWatcher 应该在 UNC 共享上工作,但我在这样做时遇到了很多问题。由于您的问题不是时间紧迫的,因此我将创建一个仅检查文件是否存在的线程,将循环休眠几秒钟,直到文件消失,然后发送警报。

注意:作为服务运行需要运行用户在远程共享上也具有网络权限。

更新:刚刚在我们的网络上做了一个快速测试。客户端运行 Windows 7 服务器运行 Windows 2008 R2。在共享中添加了几个文件,无论大小。在代码运行时删除文件没有任何问题。即使没有 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
于 2011-02-28T07:46:05.080 回答