web-dev-qa-db-ja.com

System.Windows.Forms.Timer.Start()/ Stop()とEnabled = true / falseの使用

.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;

有意差がない場合、どのオプションを選択するかについてコミュニティでコンセンサスがありますか?

31
Stewart

BFreeJames の両方で述べられているように、 Start\StopEnabled 機能に関して。ただし、どちらを使用するかは、コンテキストと独自のコーディングスタイルガイドラインに基づいて決定する必要があります。それはあなたがあなたのコードの読者にあなたが書いたものをどのように解釈させたいかによります。

たとえば、操作の開始と停止として実行していることをユーザーに確認してもらいたい場合は、Start/Stopを使用することをお勧めします。ただし、機能のアクセシビリティまたは機能を有効にしているような印象を与えたい場合は、Enabledおよびtrue/falseを使用する方が自然です。

どちらか一方を使用するだけでコンセンサスが必要になるとは思いません。実際には、コードとそのメンテナンスのニーズに基づいて決定する必要があります。

31
Jeff Yates

Microsoftのドキュメントから:

Startメソッドを呼び出すことは、Enabledをtrueに設定することと同じです。同様に、Stopメソッドを呼び出すことは、Enabledをfalseに設定することと同じです。

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

だから、違いはないと思います...

15
BFree

いいえ、それらは互いに同等です。

Timer.Enabled および Timer.Start / Timer.Stop を参照してください。

コンセンサスについての質問に追加するために、Start/Stopメソッドを使用する方がおそらくより良い方法であり、読みやすさについてもより良いと思います。

ジェームズ。

6
James

個人的には、プロパティを設定して値を変更する以外にあまり影響を与えたくないので、私には明らかなようにStart()/Stop()に固執する傾向があります。メソッドを呼び出すときは、何かが起こることを求めているということです。

とは言うものの、どの設定Enabled = trueするつもりです:)

5
Jon Grant

EnabledStart()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();
};
2
Jayson Ragasa

timer.Stop()timer.Start()は_timer.Enabled_のサブであるため、使用しません。アプリケーションの開始時(ロード時)にタイマーをfalseに設定する場合は、_timer.Enabled = false_を使用する必要があります。timer.Stop()は機能しません。これが私が_timer.Enabled = false/true_を使用する理由です。

1
Ahmad