【发布时间】:2019-09-19 09:14:30
【问题描述】:
我开发了 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();
}
【问题讨论】:
-
1.在之前禁用计时器并在之后启用计时器... 2. 添加一些布尔变量并检查并设置之前和之后设置...您尝试过那些明显的解决方案吗?
-
我已经尝试了第二个选项添加 booll var 来检查,但你能解释一下之前和之后设置的计时器吗
-
time.Enabled = false在foldermovinglogic()之前并在之后返回 true? -
谢谢它解决了我的问题。