我已经开发了Windows应用程序,它将监视源文件夹,如果在源文件夹下找到任何文件夹,则在进程文件夹中执行某些操作后,它将将该文件夹移动到进程文件夹,它将移动那些文件夹的目标文件夹或错误文件夹。 我已将此Windows应用程序转换为Windows服务,并且我使该服务每30秒调用一次,但现在我无法在下次调用该服务之前再次检查以前的过程是否完成(如果尚未完成,如何避免再次调用服务)。 >
我添加了30秒的计时器间隔,但过程可能需要30秒以上(不可预测)。
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = 30000; //5000number in milisecinds
timer.Enabled = true;
}
private void OnElapsedTime(object source, ElapsedEventArgs e)
{
foldermovinglogic();
}
答案 0 :(得分:0)
您使事情变得过于复杂,.Net具有内置的FileSystemWatcher,当目录中的内容发生更改时,它将丢弃一个事件,您可以从那里按创建的文件夹进行过滤,并将当前子文件夹与子文件夹进行比较上一次更改,然后对新创建的文件夹执行打算的操作。
适合您的示例:
using System.IO;
private static FileWatcher yourFileWatcher;
yourFileWatcher = new FileSystemWatcher(directory);
yourFileWatcher.Created += new FileSystemEventHandler(OnCreated);
private void FSW_Created(object sender, FileSystemEventArgs e)
查看此tutorial