[英]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.