非常简单的一个需求,我有一个方法 A,该方法执行我需要的操作.。执行完毕之后,间隔一段时间
再去自动执行。 要求是,我必须要保证方法A 执行完毕之后,再去间隔一段时间,自动执行。用 timer 类的请考虑,假如你用timer定义间隔多久自动执行,因为我方法A执行完成需要的时间是不固定的,根据数量的大小而来的.比如我这次 方法A 执行完成需要 5分钟,下次有可能是10分钟.那么问题来了,比如我timer设定的间隔时间是 3分钟,而我方法执行完毕要5分钟,是不是会出现 当我 方法A 还没执行完成,timer间隔时间到了,又重复执行方法A.这样会发生很严重的错误。因为我有些数据是必须要等 方法 跑完之后,才能去重新执行。
.小弟不才,目前我用到的 开启一个线程线,程里用一个死循环,执行方法A。执行完成之后,在把线程 sleep一段时间,用这种方式。求各位高手指点有没有更好的方法.
再去自动执行。 要求是,我必须要保证方法A 执行完毕之后,再去间隔一段时间,自动执行。用 timer 类的请考虑,假如你用timer定义间隔多久自动执行,因为我方法A执行完成需要的时间是不固定的,根据数量的大小而来的.比如我这次 方法A 执行完成需要 5分钟,下次有可能是10分钟.那么问题来了,比如我timer设定的间隔时间是 3分钟,而我方法执行完毕要5分钟,是不是会出现 当我 方法A 还没执行完成,timer间隔时间到了,又重复执行方法A.这样会发生很严重的错误。因为我有些数据是必须要等 方法 跑完之后,才能去重新执行。
.小弟不才,目前我用到的 开启一个线程线,程里用一个死循环,执行方法A。执行完成之后,在把线程 sleep一段时间,用这种方式。求各位高手指点有没有更好的方法.
设置一个变量flag 标志A在执行,如果执行中则设置flag为true,否则为flase。那么在A执行前先判断如果flag为true那么就不执行了,否则就执行。
这样你的timer就一直那样设置下去。。大不了下一个时间片来的时候再来执行。。
Timer1.Stop()
Try Catch ex As Exception End Try
Timer1.Start()
End Sub
我个人喜欢阻塞方式,给你个例子 ManuRestEvent _Evt=new ManuResetEvent(false);
bool _IsQuit=false;
... do
{
DoMyMethod();
if(_Evt.WaitOne(30000)) //延迟的时间
{
break;
} }while(!_IsClose)
...
DoQuit()
{
_IsClose=true;
_Evt.Set();
}
在功能过程执行代码最后写上.Change(X, -1)//X为再次运行的时间间隔
你考虑下,很简单的