假设我们在.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;
如果没有显着差异,社区是否就选择哪个选项达成共识?
答案 0 :(得分:31)
正如BFree和James所述,Start
\
Stop
与Enabled
在功能方面没有区别。但是,决定使用哪个应该基于上下文和您自己的编码风格指南。这取决于您希望代码的读者如何解释您所写的内容。
例如,如果您希望他们在启动操作并停止该操作时看到您正在执行的操作,则可能需要使用Start/Stop
。但是,如果您想给人留下启用功能的辅助功能或功能的印象,那么使用Enabled
和true/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.Enabled和Timer.Start / Timer.Stop
为了在你的问题中添加关于共识的内容,我想说使用Start / Stop方法可能是更好的做法,而且我认为它对于可读性也更好。
詹姆斯。
答案 3 :(得分:5)
就个人而言,我不喜欢设置属性除了更改值之外还有太多后果,所以我倾向于坚持Start()
/ Stop()
因为它对我很清楚(呃)当你调用一个方法时,你要求发生一些事情。
那就是说,我不认为Enabled = true
设置的内容会有很多含糊不清的地方:)
答案 4 :(得分:2)
这是一个简单的代码,用于测试Enabled
,Start()
,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 = false
,timer.Stop()
将无效。这就是我使用timer.Enabled = false/true
。