仍然让我的脑袋缠绕着C#中的Timers,它比AS3更强大。 我需要以更短和更短的间隔调用另一种方法。在开始时说一秒,然后逐渐缩短间隔,直到我可能每秒调用方法100X。 我使用过coroutines但很确定我需要一个实际的Timer对象。任何人都可以帮助或指出正确的方向吗?
答案 0 :(得分:0)
您可以从这个例子开始:
System.Timers.Timer t = new System.Timers.Timer();
public void TimerSetup()
{
t.Interval = 1000;
t.Elapsed += ElapsedMethod;
t.Start();
}
public void ElapsedMethod(object sender, System.Timers.ElapsedEventArgs e)
{
//do stuff
t.Interval = t.Interval - 5; //however much you want it to reduce.
}
您必须确定缩短计时器间隔所需的条件,以及何时执行此操作,但这应该为您提供一个开始。
答案 1 :(得分:0)
使用Task
:
shouldIStayInThisLoop = true;
interval = 1000; // 1000 milliseconds == 1 second
Task.Factory.StartNew(()->
{
while (shouldIStayInThisLoop)
{
DoSomeStuff();
if (SomeConditionIsMet())
{
interval = GetNewInterval();
}
Thread.Sleep(interval);
shouldIStayInThisLoop = CheckIfIShouldStayInThisLoop();
}
});