TimerWon'tTick我的代码里有一个Windows.Forms.Timer,我执行了3次。但是,定时器根本不调用滴答函数。私人整数计数=3;私人计时器;voidLoopy(inttimes){count=times;计时器=新计时器();计时器.间隔=1000;timer.Tick+=newEventHandler(timer_Tick);定时器。开始();}voidtimer_Tick(objectsender,EventArgse){count--;如果(计数==0)定时器。停止();else{//在这里做点什么}}从代码的其他地方调用Loopy()。尝试使用System.Timers而不是Windows.Forms.TimervoidLoopy(inttimes){count=times;定时器=新定时器(1000);定时器。启用=真;timer.Elapsed+=newElapsedEventHandler(timer_Elapsed);定时器。开始();}voidtimer_Elapsed(objectsender,ElapsedEventArgse){thrownewNotImplementedException();如果Loopy()方法在不是主UI线程的线程中被调用,计时器将不会计时。如果要从代码中的任何位置调用此方法,则需要检查InvokeRequired属性。所以你的代码应该是这样的(假设代码是在一个表单中):}else{计数=次;计时器=新计时器();计时器.间隔=1000;timer.Tick+=newEventHandler(timer_Tick);定时器。开始();我不确定你做错了什么看起来正确,这段代码有效:看看它与你的代码相比如何。publicpartialclassForm1:Form{privateintcount=3;私人定时器定时器;publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){Loopy(count);}voidLoopy(inttimes){count=times;计时器=新计时器();计时器.间隔=1000;timer.Tick+=newEventHandler(timer_Tick);定时器。开始();}voidtimer_Tick(objectsender,EventArgse){count--;如果(计数==0)定时器。停止();else{//}}}这是一个有效的Rx代码:Observable.Interval(TimeSpan.FromSeconds(1)).Take(3).Subscribe(x=>Console.WriteLine("tick"));当然,您可以在节目中订阅更多有用的内容。如果您使用的是Windows.Forms.Timer,则应使用以下内容。以上就是C#学习教程的全部内容:Timer不会滴答,分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——//DeclareTimerprivateTimer_timer=newTimer();voidLoopy(int_time){_timer.Interval=_time;_timer.Enabled=true;_timer.Tick+=newEventHandler(timer_Elapsed);_timer.Start();}voidtimer_Elapsed(objectsender,EventArgse){//在这里做你的东西}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
