我一直在监视网络目录中的文件。我最初使用 FileWatcher 来监视它们。我发现在使用 FileWatcher 时文件被锁定,因此我将实现更改为使用 DirectoryInfo 来监视我正在监视的目录中新到达和删除的文件。似乎在使用 DirectoryInfo 时,监视目录中的文件也被锁定,从而防止文件在下载文件后被另一个应用程序删除。我的手表应用程序是 Windows 服务。
谁能告诉我他们是否遇到过问题,如果遇到过,您是如何解决的?
谢谢,
我一直在监视网络目录中的文件。我最初使用 FileWatcher 来监视它们。我发现在使用 FileWatcher 时文件被锁定,因此我将实现更改为使用 DirectoryInfo 来监视我正在监视的目录中新到达和删除的文件。似乎在使用 DirectoryInfo 时,监视目录中的文件也被锁定,从而防止文件在下载文件后被另一个应用程序删除。我的手表应用程序是 Windows 服务。
谁能告诉我他们是否遇到过问题,如果遇到过,您是如何解决的?
谢谢,
您确定创建/更新文件的任何操作都已完成吗?否则,文件将被锁定。
尽管 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