C# 带有下拉框的文件监视程序类

C# 带有下拉框的文件监视程序类,c#,C#,我正在尝试编写一个小型实用程序服务,该服务将检测项目何时已添加到同步的drop box文件夹中,然后等待(以允许完全同步)并将项目移动到带有日期戳的暂存文件夹中进行进一步处理。很简单 这是我的密码: static void Main(string[] args) { var watcher = new FileSystemWatcher(); string _path = @"E:\IMPORT\Dropbox\"; watche

我正在尝试编写一个小型实用程序服务,该服务将检测项目何时已添加到同步的drop box文件夹中,然后等待(以允许完全同步)并将项目移动到带有日期戳的暂存文件夹中进行进一步处理。很简单

这是我的密码:

    static void Main(string[] args)
    {
        var watcher = new FileSystemWatcher();

        string _path = @"E:\IMPORT\Dropbox\";
        watcher.Path = _path;
        watcher.EnableRaisingEvents = true;
        watcher.Created += new FileSystemEventHandler(watcher_Created);


        Console
         .WriteLine("FileSystemWatcher ready and listening to changes in :\n\n" 
                    + _path);

        watcher.Path = _path;
        Console.ReadLine();
    }

    static void watcher_Created(object sender, FileSystemEventArgs e)
    {
        Thread.Sleep(3000);
        Console.WriteLine(e.Name + " file has been created.");

        string filename = Path.GetFileName(e.FullPath);
        string path = @"E:\IMPORT\Staging\" 
                      + DateTime.Now.ToFileTime().ToString() 
                      + @"\";

        try 
        { 
          Directory.CreateDirectory(path); 
        } 
        catch(Exception ex) 
        { 
          Console.WriteLine("Error: " + ex.ToString()); 
        }
        try 
        { 
          File.Move(e.FullPath, path + filename); 
        } 
        catch(Exception ex) 
        { 
          Console.WriteLine("Error: " + ex.ToString());
        }
    }

如果将一个项目添加到同步目录中,此代码将正常工作,但是将添加多个项目,并且需要延迟将项目添加到dropbox。关于如何实现这一点,您有什么想法吗?

我认为您最好的选择是删除FileSystemWatcher,并将其替换为您自己对目录的定期监视(例如,BackgroundWorker线程中的循环或计时器触发的事件)

在这种设计中,您可以将文件上的时间戳与当前时间进行比较,并仅在您认为已经过了足够的时间时处理该文件,从而根据需要将文件的处理延迟多久


此设计还将支持使用目录中已有的文件重新启动应用程序,而FileSystemWatcher方法可能不会这样做。

我认为您最好的选择是删除FileSystemWatcher,并用自己对目录的定期监视来替换它(例如,BackgroundWorker线程中的循环或计时器触发的事件)

在这种设计中,您可以将文件上的时间戳与当前时间进行比较,并仅在您认为已经过了足够的时间时处理该文件,从而根据需要将文件的处理延迟多久


此设计还支持重新启动应用程序,使目录中已存在文件,而FileSystemWatcher方法可能不会这样做。

为什么会延迟?这样就不会重复使用任何暂存文件夹?@Austin,因此如果传输20mb.pdf,则有时间在drop box目录中完全同步为什么会延迟?这样就不会重复使用任何暂存文件夹?@Austin重新使用?@Austin,因此如果传输20mb.pdf,它有时间在drop box目录中完全同步