immediatelyfromOnStartinWindowsService得到如下代码。计时器=新计时器();timer.Elapsed+=timer_Elapsed;定时器。启用=真;timer.Interval=3600000;定时器。开始();这会导致timer_Elapsed的代码从我启动服务后每小时执行一次。有没有办法让它在我启动服务时执行,然后每小时执行一次?timer_Elapsed调用的方法耗时太长,直接从OnStart调用。只需要启动一个线程池线程来调用worker函数,就像Timer一样。像这样:timer.Elapsed+=timer_Elapsed;ThreadPool.QueueUserWorkItem((_)=>DoWork());...voidtimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){DoWork();}voidDoWork(){//etc...}使用System.Timers.Timer的AutoReset属性并将其值设置为“true”。无需使用timer.Start()因为它与timer.Enabled=true;的作用相同计时器=新计时器();timer.Elapsed+=timer_Elapsed;定时器。启用=真;timer.Interval=3600000;timer.AutoReset=true;AutoReset=true将设置一个值,指示每次经过指定的时间间隔时Timer都应引发Elapsed事件。使用System.Threading.Timer类而不是System.Timers.Timer,因为这种类型只是线程定时器的包装器。它也适合您的要求。System.Threading.Timertimer=newSystem.Threading.Timer(this.DoWork,this,0,36000);这是详细信息。如果你想让你的Timer立即被触发,那么你只需要初始化Timer对象而不指定一个时间间隔(默认是100ms,这几乎是立即的:P),然后将被调用函数中的时间间隔设置为你喜欢的任何的价值。下面是我在Windows服务中使用的例子:以上是C#学习教程:Firetimer_立即获取Windows服务中OnStart分享的所有内容,如果对大家有用,需要了解更多C#学习教程,希望你多注意——privatestaticTimer_timer;protectedoverridevoidOnStart(string[]args){_timer=newTimer();//这将设置默认间隔_timer.AutoReset=false;_timer.Elapsed=OnTimer;_定时器。开始();}privatevoidOnTimer(objectsender,ElapsedEventArgsargs){//在这里做一些工作_timer.Stop();_timer.Interval=3600000;//在这里设置你的新间隔_timer.Start();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
