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