繁体   English   中英

从AS3到C#,一个简单的计时器

[英]From AS3 to C# a simple elapsed Timer

我需要在C#(MonoBehavior)中设置一个简单的经过计时器,该计时器在完成时调用方法,但也可以在完成之前将其取消。 如果取消或停止,它将自动重置其间隔。 我不需要像线程这样的东西。
阅读有关C#计时器的文档
https://msdn.microsoft.com/zh-cn/library/System.Timers.Timer%28v=vs.110%29.aspx
还是有点困惑。 例如,当您设置mytimer.Enabled = false时 ,是否还会将计时器重置为0?
也许我应该看看协程呢?(这是针对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();
}

通过使用System.Timers.Timer ,您正在使用多线程-这很可能不是您想要的。

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

您可以按自己想要的方式使用“ Start和“ Stop ”,因为实际上没有滴答时钟-基本上,它将来只会在Windows中注册回调。

来自MSDN的相关文档:

在通过调用停止禁用了计时器之后调用启动将导致计时器重新开始中断的间隔。 如果将计时器设置为5000毫秒的间隔,并且您在3000毫秒左右调用Stop,则调用Start将导致计时器等待5000毫秒,然后再引发Tick事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM