监视映射的UNC时出现FileSystemWatcher()问题

时间:2011-09-07 22:50:51

标签: c# filesystemwatcher unc

我遇到了FileSystemWatcher()类的问题。当我监视硬盘上的本地文件时,它可以完美运行。当我更改为映射的UNC时,它不再触发。 UNC映射到本地驱动器(X :),使用NET USE命令提供用户和密码,这在启动时在批处理文件中完成。谁知道为什么这不起作用?我检查了路径,所有这些都是正确的,所以问题应该与其他东西有关......

fw = new FileSystemWatcher();
        fw.Path = fileInfoPath;
        fw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        fw.Filter = fileInfoName;
        fw.Changed += new FileSystemEventHandler(FileOnChanged);
        fw.Created += new FileSystemEventHandler(FileOnChanged);

帮助表示感谢! :)

3 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是离开FileSystemWatcher()并创建我自己的小观察者。它非常简单,但我唯一想看的是文件被重写后再执行一些操作。

这基本上就是我所做的(删除了try / catch和一些其他线程的调用):

System.Threading.Timer tFileWatcher;
private string fileTime1 = "";
private string fileTime2 = "";
//
private void Form1_Load(object sender, EventArgs e)
    {
        tFileWatcher = new System.Threading.Timer(ComputeBoundOp2, 0, 0, 500);
        fileTime1 = File.GetLastWriteTime(fileInfo).ToFileTime().ToString();
        fileTime2 = File.GetLastWriteTime(fileInfo).ToFileTime().ToString();
    }

private void ComputeBoundOp2(Object state)
    {
        fileTime2 = File.GetLastWriteTime(fileInfo).ToFileTime().ToString();

        if (fileTime1 != fileTime2)
        {
        //Do something
        }
    }

答案 1 :(得分:0)

我找到了一种非常酷的方法,让UNC在代码项目的Windows服务中使用凭证与FileSystemWatcher一起工作。

见Adrian Hayes的帖子:http://www.codeproject.com/Articles/43091/Connect-to-a-UNC-Path-with-Credentials

他的解决方案很有效。

答案 2 :(得分:0)

我无法获得任何日期和时间触发器。查看文件详细信息,服务器根本没有更改它们。所以我在文件大小(NotifyFilters.Size)上使用了一个触发器,它有一个魅力。我留下了另一张通知,以防万一我没有使用UNC。

      fsw.Path = Path.GetDirectoryName(currentFilename);
      fsw.Filter = Path.GetFileName(currentFilename);
      fsw.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size;
      fsw.Changed += new FileSystemEventHandler(fsw_Changed);
      fsw.EnableRaisingEvents = true;