想象一下,我有一个System.Windows.Forms.Timer
,间隔为1000毫秒。
如果我调用Timer.Start()
方法,500毫秒后我再次调用Timer.Start()
会发生什么?第二次Start
通话会重置间隔吗?有副作用吗?
答案 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设置为已经具有的相同值,则什么都不会发生,这是一个错误。