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

从AS3到C#一个简单的运行计时器,c#,timer,C#,Timer,我需要在C#(MonoBehavior)中设置一个简单的运行计时器,它在完成时调用一个方法,但也可以在完成之前取消。如果取消或停止,它将自动重置其间隔。我不需要像穿线这样花哨的东西。 阅读有关C#计时器的文档仍然有点困惑。例如,当您设置mytimer.Enabled=false时,它是否也会将计时器重置回0也许我应该改为考虑合作计划?(这是为了团结) 在AS3中,我会这样做 private var _delayTimer:Timer; //create a Timer object that

我需要在C#(MonoBehavior)中设置一个简单的运行计时器,它在完成时调用一个方法,但也可以在完成之前取消。如果取消或停止,它将自动重置其间隔。我不需要像穿线这样花哨的东西。
阅读有关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毫秒