Usar System.Windows.Forms.Timer.Start () / Stop () versus Enabled = true / false

Supongamos que estamos utilizando System.Windows.Forms.Timer en una aplicación .Net. ¿Hay alguna diferencia significativa entre el uso de los métodos Start () y Stop () en el temporizador, en comparación con el uso de la propiedad Enabled?

Por ejemplo, si queremos pausar un temporizador mientras hacemos algún procesamiento, podríamos hacer:

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

o, podríamos hacer:

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

Si no hay una diferencia significativa, ¿hay un consenso en la comunidad sobre qué opción elegir?

Como lo expresan BFree y James , no hay diferencia en Start \ Stop versus Enabled con respecto a la funcionalidad. Sin embargo, la decisión sobre qué utilizar debe basarse en el contexto y sus propias pautas de estilo de encoding. Depende de cómo quiera que un lector de su código interprete lo que ha escrito.

Por ejemplo, si desea que vean lo que está haciendo como iniciar una operación y detener esa operación, es probable que desee usar Start/Stop . Sin embargo, si desea dar la impresión de que está habilitando la accesibilidad o la funcionalidad de una función, entonces usar Enabled y true/false es una opción más natural.

No creo que se requiera un consenso solo para usar uno u otro, realmente tiene que decidir en función de las necesidades de su código y su mantenimiento.

De la documentación de Microsoft:

Llamar al método de Inicio es lo mismo que configurar Habilitado a verdadero. Del mismo modo, llamar al método Stop es lo mismo que establecer Enabled en false.

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

Entonces, supongo que no hay diferencia …

No, son equivalentes entre sí.

Ver Timer.Enabled y Timer.Start / Timer.Stop

Para agregar a su Pregunta sobre el consenso, yo diría que probablemente sea una mejor práctica usar los métodos Start / Stop y también es mejor para la legibilidad, supongo.

James.

Personalmente, no me gusta configurar las propiedades para tener demasiadas consecuencias, aparte de cambiar un valor, por lo que tiendo a pegarme a Start() / Stop() ya que es claro (er) para mí que cuando invocas un método, estás pidiendo que pase algo

Dicho esto, no creo que exista una gran cantidad de ambigüedad sobre qué configuración Enabled = true va a hacer 🙂

Aquí hay un código simple para probar cómo funcionan Enabled , Start() , Stop() uno con el otro.

Haga una aplicación de prueba de formulario de Windows, agregue dos botones simples y pegue este código dentro del constructor de 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(); }; 

No uso timer.Stop() y timer.Start() , porque son subs del timer.Enabled . timer.Enabled . Si desea configurar el temporizador a falso al comienzo de la aplicación (al momento de la carga), debe usar timer.Enabled = false , timer.Stop() no funcionará. Es por eso que uso timer.Enabled = false/true .