从AS3到C#一个简单的经过时间的计时器

时间:2015-06-24 14:30:53

标签: c# timer

我需要在C#(MonoBehavior)中设置一个简单的已用Timer,它在完成时调用方法,但也可以在完成之前取消。如果取消或停止,它会自动重置其间隔。我不需要像线程那样的任何想法 阅读关于C#定时器的文档
https://msdn.microsoft.com/en-us/library/System.Timers.Timer%28v=vs.110%29.aspx有点困惑。例如,当你设置 mytimer.Enabled = false 时它是否还将计时器重置为0?
也许我应该看看Coroutines?(这是针对Unity的)

在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();
}

1 个答案:

答案 0 :(得分:0)

使用System.Timers.Timer,你 使用多线程 - 很可能这不是你想要的。

相反,您可能需要System.Windows.Forms.Timer - 这会将计时器事件发布回UI线程(当然,如果您使用的是Windows窗体)。

您可以按照自己想要的方式使用StartStop,因为实际上没有滴答作响的时钟 - 它基本上只会记录来自Windows的回调。

MSDN的相关文档:

  

通过调用Stop禁用定时器后调用Start将导致Timer重新启动中断的间隔。如果您的Timer设置为5000毫秒间隔,并且您在大约3000毫秒内调用Stop,则调用Start将导致Timer在提升Tick事件之前等待5000毫秒。