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?
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.
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...
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.
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 :)
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();
};
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
.