使用定时器延迟几秒的操作privatevoiddelay(){_delayTimer=newSystem.Timers.Timer();_delayTimer.Interval=5000;//_delayTimer.Enabled=true;_delayTimer.Elapsed+=_delayTimer_Elapsed;_delayTimer.Start();一些方法();}}privatevoid_delayTimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){//延迟5秒}我想在进入delay()方法时启动计时器,而不是我想要5秒延迟,并且仅在此之后我想执行someMethod()而目前这并没有发生,执行delay()然后执行someMethod()没有5秒的延迟您当前的代码设置了一个计时器,然后立即执行someMethod。相反,您需要将实际的方法调用放入Elapsed处理程序中:privatevoiddelay(){_delayTimer=newSystem.Timers.Timer();_delayTimer.Interval=5000;//_delayTimer.Enabled=true;_delayTimer.Elapsed+=_delayTimer_Elapsed;_delayTimer.Start();}}privatevoid_delayTimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){someMethod();如果你没有别的打算,你可以简单地写Inlinethis:_delayTimer=newSystem.Timers.Timer();_delayTimer.Interval=5000;_delayTimer.Elapsed+=(o,e)=>someMethod();_delayTimer.Start();如果你想让当前线程暂停五秒,调用Thread.Sleep。例如:Thread.Sleep(TimeSpan.FromSeconds(5));做一点事();如果您希望某事在五秒后发生,您可以在做其他事情时使用计时器。当计时器超时时,操作将在线程池线程上执行。此外,如果您只希望计时器执行一次(而不是每五秒一次),请务必将AutoReset设置为false。如果您使用的是.Net4.5(或使用BCL.Async包),则可以使用Task.Delayprivateasyncvoiddelay(){awaitTask.Delay(5000);一些方法();如果您使用的是.Net4。5请尝试以下代码。我建议你使用System.Threading.Timervartimer=newSystem.Threading.Timer(x=>someMethod(),null,5000,System.Threading.Timeout.Infinite);不要忘记使用Threading.Timer会在ThreadPool线程中调用someMethod,如果你正在访问UI,则需要编组对UI线程的调用。您需要在计时器的Elapsed处理程序中调用someMethod:privatevoiddelay(){_delayTimer=newSystem.Timers.Timer();_delayTimer.Interval=5000;_delayTimer.AutoReset=false;//这样它只调用一次方法_delayTimer.Elapsed+=(s,args)=>someMethod();_delayTimer.Start();}也可以使用Task.Delay:以上是C#学习教程:使用Timer延迟运行几秒的内容,如果对你有用还需要了解更多C#学习教程,希望大家点赞更多关注—privatevoiddelay(){Task.Delay(5000).ContinueWith(t=>someMethod());}System.Threading.Tasks.Task.Factory.StartNew(()=>{System.Threading.Thread.Sleep(5000);/**这里Yopur代码做一些方法:D**/});本文收集自网络,不代表任何内容,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
