如果我在类System.Windows.Forms.Timer上调用Start()两次会发生什么?

时间:2010-12-28 13:45:03

标签: c# .net vb.net

想象一下,我有一个System.Windows.Forms.Timer,间隔为1000毫秒。

如果我调用Timer.Start()方法,500毫秒后我再次调用Timer.Start()会发生什么?第二次Start通话会重置间隔吗?有副作用吗?

4 个答案:

答案 0 :(得分:10)

计时器已经启动,因此第二次通话不会影响计时器。

无论如何,这都是容易来测试。

答案 1 :(得分:2)

Start()只将Enabled属性设置为true。如果Enabled属性已设置为true,则只需将Enabled设置为true并继续运行。

同样,Stop()将Enabled设置为false。

答案 2 :(得分:2)

它不会影响任何事情......

请参阅此代码

  class TimerTest
{
   static int i = 0;
    static void Tick(object sender, EventArgs e)
    {

        Console.WriteLine(i);
        i++;
    }
    static void Main()
    {
        // interval = 500ms
        Timer tmr = new Timer();
        tmr.Interval = 500;
        tmr.Elapsed += Tick;
        tmr.Start();
        Console.ReadLine();
        tmr.Start();
        Console.ReadLine();
        tmr.Stop();
        Console.ReadLine();
        tmr.Start();
        Console.ReadLine();
        tmr.Dispose(); // This both stops the timer and cleans up.
    }
}

一旦你开始,如果回车,第二次开始不会影响任何事情。

答案 3 :(得分:0)

那些回答Start()“只是将Enabled属性设置为true”的答案忽略了Enabled是一个属性,并且所有启动逻辑都在set访问器中。因此,这没有“公正”的意义。 查看参考源可以很清楚地看到,如果将Enabled设置为已经具有的相同值,则什么都不会发生,这是一个错误。