En Utilisant Le Système.Windows.Forme.Minuterie.Start () et Stop() rapport Enabled = true/false

supposons que nous utilisions le système.Windows.Forme.Minuterie dans une application .Net, y a-t-il une différence significative entre l'utilisation des méthodes Start() et Stop() sur la minuterie, et l'utilisation de la propriété Enabled?

par exemple, si nous voulons mettre en pause une minuterie pendant que nous faisons un traitement, nous pouvons faire:

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

ou, nous pourrions le faire:

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

s'il n'y a pas de différence significative, existe-t-il un consensus dans la communauté sur l'option à choisir?

30
demandé sur Stewart 2009-06-18 18:26:34

6 réponses

comme indiqué par BFree et James , il n'y a pas de différence Start \ Stop versus Enabled en ce qui concerne la fonctionnalité. Toutefois, la décision d'utiliser le code devrait être fondée sur le contexte et sur vos propres lignes directrices en matière de style de codage. Cela dépend de la façon dont vous voulez qu'un lecteur de votre code interprète ce que vous avez écrit.

par exemple, si vous voulez qu'ils voient ce que vous faites comme démarrage d'une opération et arrêt de cette opération, vous voulez probablement utiliser Start/Stop . Cependant, si vous voulez donner l'impression que vous permettez l'accessibilité ou la fonctionnalité d'une fonctionnalité, alors utiliser Enabled et true/false est un choix plus naturel.

Je ne pense pas qu'un consensus est nécessaire sur l'utilisation de l'un ou l'autre, vous devez vraiment décider en fonction des besoins de votre code et sa maintenance.

30
répondu Jeff Yates 2017-05-23 12:34:00

de la Documentation de Microsoft:

appeler la méthode Start est la même comme paramètre activé à true. Pareillement, appeler la méthode Stop est la même chose que paramétrage activé à false.

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

donc, je suppose qu'il n'y a pas de différence...

15
répondu BFree 2009-06-18 14:32:48

non ils sont tous équivalents.

Voir Timer.Activé et minuterie.Démarrer / De La Minuterie.Arrêt

pour ajouter à votre Question sur le consensus, je dirais que c'est probablement une meilleure pratique d'utiliser les méthodes Start/Stop et c'est aussi mieux pour la lisibilité je suppose.

James.

6
répondu James 2009-06-18 14:32:38

personnellement, je n'aime pas définir des propriétés pour avoir trop de conséquence autre que de changer une valeur, donc j'ai tendance à coller au Start() / Stop() comme il est clair(er) pour moi que lorsque vous invoquez une méthode, vous demandez quelque chose pour arriver.

cela dit, je ne crois pas qu'il y a beaucoup d'ambiguïté sur ce paramètre Enabled = true va faire :)

5
répondu Jon Grant 2013-02-11 00:15:10

voici un code simple pour tester comment Enabled , Start() , Stop() travailler ensemble.

faire un test Windows form app, ajouter deux boutons simples et coller ce code à l'intérieur Form1() constructeur:

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();
};
2
répondu Jayson Ragasa 2017-07-11 09:48:19

Je n'utilise pas timer.Stop() et timer.Start() , parce qu'ils sont des sous-titres de timer.Enabled . Si vous voulez régler le timer à false au début de l'application (au chargement) , vous devez utiliser timer.Enabled = false , timer.Stop() ne fonctionnera pas. C'est pourquoi j'utilise timer.Enabled = false/true .

1
répondu Ahmad 2012-01-31 10:57:30