相关疑难解决方法(0)

FileSystemWatcher vs polling监视文件更改

我需要设置一个应用程序来监视在本地或网络驱动器上的目录中创建的文件.

请问FileSystemWatcher一个计时器或投票将是最好的选择.我过去曾使用过这两种方法,但并不广泛.

两种方法都存在哪些问题(性能,可靠性等)?

c# file-io filesystemwatcher distributed-filesystem

145
推荐指数
8
解决办法
7万
查看次数

在Linux上使用Samba的FileSystemWatcher

我正在使用FileSystemWatcher我的C#应用​​程序(在Windows上运行),以便在我的应用程序中更新我当前正在浏览的文件.当我浏览本地目录时,它工作得很好.重命名,删除或添加文件时会通知我.但是,例如,当我第一次在网络驱动器上重命名文件时,FileSystemWatcher通知我重命名操作,然后,当我重命名相同的文件或其他文件时,FileSystemWatcher通知我一个错误:

the specified server cannot perform the requested operation.

然后FileSystemWatcher没有通知我任何事情.

有时我可以在FileSystemWatcher没有通知我之前重命名两次......

这是我的测试代码:

    static void Main(string[] args)
    {
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"N:\prive\defFolder";

        watcher.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;

        watcher.Changed += new FileSystemEventHandler(watcher_Changed);
        watcher.Created += new FileSystemEventHandler(watcher_Changed);
        watcher.Deleted += new FileSystemEventHandler(watcher_Changed);
        watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
        watcher.Error += new ErrorEventHandler(watcher_Error);

        watcher.EnableRaisingEvents = true;

        Console.Read();
        watcher.Dispose();
    }

    static void watcher_Error(object sender, ErrorEventArgs e)
    {
        Console.WriteLine("error : " + e.GetException().Message);
    }

    static void watcher_Renamed(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# linux samba filesystemwatcher

5
推荐指数
1
解决办法
5720
查看次数