从AS3到C#一个简单的运行计时器
我需要在C#(MonoBehavior)中设置一个简单的运行计时器,它在完成时调用一个方法,但也可以在完成之前取消。如果取消或停止,它将自动重置其间隔。我不需要像穿线这样花哨的东西。从AS3到C#一个简单的运行计时器,c#,timer,C#,Timer,我需要在C#(MonoBehavior)中设置一个简单的运行计时器,它在完成时调用一个方法,但也可以在完成之前取消。如果取消或停止,它将自动重置其间隔。我不需要像穿线这样花哨的东西。 阅读有关C#计时器的文档仍然有点困惑。例如,当您设置mytimer.Enabled=false时,它是否也会将计时器重置回0也许我应该改为考虑合作计划?(这是为了团结) 在AS3中,我会这样做 private var _delayTimer:Timer; //create a Timer object that
阅读有关C#计时器的文档仍然有点困惑。例如,当您设置mytimer.Enabled=false时,它是否也会将计时器重置回0
也许我应该改为考虑合作计划?(这是为了团结) 在AS3中,我会这样做
private var _delayTimer:Timer;
//create a Timer object that runs once for 1 second
_delayTimer = new Timer(1000,1);
//add handler
_delayTimer.addEventListener(TimerEvent.COMPLETE, onDelay);
//start timer
_delayTimer.start();
private function onDelay(e:TimerEvent):void{
trace('delay finished!);
}
//some other method to interrupt-stop and reset the delay timer
private function foo():void{
_delayTimer.reset();
}
通过使用
System.Timers.Timer
,您正在使用多线程-很可能这不是您想要的
相反,您可能需要System.Windows.Forms.Timer
——这将把计时器事件发回UI线程(当然,如果您使用的是Windows窗体)
你可以按你想要的方式使用Start
和Stop
,因为实际上没有滴答作响的时钟——它基本上只是在将来注册一个来自Windows的回调
MSDN中的相关文件:
在通过调用Stop禁用计时器后调用Start将导致计时器重新启动中断的间隔。如果您的计时器设置为5000毫秒间隔,并且您在3000毫秒左右调用Stop,则调用Start将导致计时器在引发滴答事件之前等待5000毫秒