.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;
有意差がない場合、どのオプションを選択するかについてコミュニティでコンセンサスがありますか?
BFree と James の両方で述べられているように、 Start
\
Stop
対 Enabled
機能に関して。ただし、どちらを使用するかは、コンテキストと独自のコーディングスタイルガイドラインに基づいて決定する必要があります。それはあなたがあなたのコードの読者にあなたが書いたものをどのように解釈させたいかによります。
たとえば、操作の開始と停止として実行していることをユーザーに確認してもらいたい場合は、Start/Stop
を使用することをお勧めします。ただし、機能のアクセシビリティまたは機能を有効にしているような印象を与えたい場合は、Enabled
およびtrue/false
を使用する方が自然です。
どちらか一方を使用するだけでコンセンサスが必要になるとは思いません。実際には、コードとそのメンテナンスのニーズに基づいて決定する必要があります。
Microsoftのドキュメントから:
Startメソッドを呼び出すことは、Enabledをtrueに設定することと同じです。同様に、Stopメソッドを呼び出すことは、Enabledをfalseに設定することと同じです。
http://msdn.Microsoft.com/en-us/library/system.windows.forms.timer.enabled.aspx
だから、違いはないと思います...
いいえ、それらは互いに同等です。
Timer.Enabled および Timer.Start / Timer.Stop を参照してください。
コンセンサスについての質問に追加するために、Start/Stopメソッドを使用する方がおそらくより良い方法であり、読みやすさについてもより良いと思います。
ジェームズ。
個人的には、プロパティを設定して値を変更する以外にあまり影響を与えたくないので、私には明らかなようにStart()
/Stop()
に固執する傾向があります。メソッドを呼び出すときは、何かが起こることを求めているということです。
とは言うものの、どの設定Enabled = true
するつもりです:)
Enabled
、Start()
、Stop()
が互いにどのように機能するかをテストする簡単なコードを次に示します。
テスト用のWindowsフォームアプリを作成し、2つの簡単なボタンを追加して、このコードを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();
};
timer.Stop()
とtimer.Start()
は_timer.Enabled
_のサブであるため、使用しません。アプリケーションの開始時(ロード時)にタイマーをfalseに設定する場合は、_timer.Enabled = false
_を使用する必要があります。timer.Stop()
は機能しません。これが私が_timer.Enabled = false/true
_を使用する理由です。