使用System.Windows.Forms.Timer.Start()/ Stop()与Enabled = true / false

时间:2009-06-18 14:26:34

标签: c# .net timer

假设我们在.Net应用程序中使用System.Windows.Forms.Timer,在计时器上使用Start()和Stop()方法与使用Enabled属性之间是否有任何有意义的区别?< /强>

例如,如果我们希望在进行某些处理时暂停计时器,我们可以这样做:

myTimer.Stop();
// Do something interesting here.
myTimer.Start();

或者,我们可以这样做:

myTimer.Enabled = false;
// Do something interesting here.
myTimer.Enabled = true;

如果没有显着差异,社区是否就选择哪个选项达成共识?

6 个答案:

答案 0 :(得分:31)

正如BFreeJames所述,Start \ StopEnabled在功能方面没有区别。但是,决定使用哪个应该基于上下文和您自己的编码风格指南。这取决于您希望代码的读者如何解释您所写的内容。

例如,如果您希望他们在启动操作并停止该操作时看到您正在执行的操作,则可能需要使用Start/Stop。但是,如果您想给人留下启用功能的辅助功能或功能的印象,那么使用Enabledtrue/false更为自然。

我认为只要使用其中一个就不需要达成共识,您必须根据代码的需求及其维护来决定。

答案 1 :(得分:15)

来自Microsoft的文档:

  

调用Start方法是一样的   设置为Enabled为true。同样,   调用Stop方法与   设置Enabled为false。

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.enabled.aspx

所以,我猜这没什么区别......

答案 2 :(得分:6)

不,他们每个人都是等同的。

请参阅Timer.EnabledTimer.Start / Timer.Stop

为了在你的问题中添加关于共识的内容,我想说使用Start / Stop方法可能是更好的做法,而且我认为它对于可读性也更好。

詹姆斯。

答案 3 :(得分:5)

就个人而言,我不喜欢设置属性除了更改值之外还有太多后果,所以我倾向于坚持Start() / Stop()因为它对我很清楚(呃)当你调用一个方法时,你要求发生一些事情。

那就是说,我不认为Enabled = true设置的内容会有很多含糊不清的地方:)

答案 4 :(得分:2)

这是一个简单的代码,用于测试EnabledStart()Stop()如何相互协作。

制作测试Windows表单应用,添加两个简单按钮并将此代码粘贴到Form1()构造函数中:

int c = 0;
Timer tmr1 = new Timer()
{
    Interval = 100,
    Enabled= false
};
tmr1.Tick += delegate
{
    c++;
};

// used to continously monitor the values of "c" and tmr1.Enabled
Timer tmr2 = new Timer()
{
    Interval = 100,
    Enabled = true
};
tmr2.Tick += delegate
{
    this.Text = string.Format("c={0}, tmr1.Enabled={1}", c, tmr1.Enabled.ToString());
};

button1.Click += delegate
{
    tmr1.Start();
};
button2.Click += delegate
{
    tmr1.Stop();
};

答案 5 :(得分:1)

我不使用timer.Stop()timer.Start(),因为它们属于timer.Enabled。如果要在应用程序开头(加载时)将计时器设置为false,则必须使用timer.Enabled = falsetimer.Stop()将无效。这就是我使用timer.Enabled = false/true

的原因