C#动态缩短Timer的间隔

时间:2015-07-07 20:30:49

标签: c# timer

仍然让我的脑袋缠绕着C#中的Timers,它比AS3更强大。 我需要以更短和更短的间隔调用另一种方法。在开始时说一秒,然后逐渐缩短间隔,直到我可能每秒调用方法100X。 我使用过coroutines但很确定我需要一个实际的Timer对象。任何人都可以帮助或指出正确的方向吗?

2 个答案:

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