0

事前定義された時間が経過した後、コードの実行を繰り返そうとしていますが、スレッドを使用して混乱させたくありません。以下のコードは良い習慣ですか?

Stopwatch sw = new Stopwatch(); // sw constructor
EXIT:
    // Here I have my code
    sw.Start();
    while (sw.ElapsedMilliseconds < 100000)
    {
        // do nothing, just wait
    }

    System.Media.SystemSounds.Beep.Play(); // for test
    sw.Stop();
    goto EXIT;
4

2 に答える 2

4

ラベルと の代わりにタイマーを使用しStopWatchます。そのタイトなループでCPUを拘束して、ビジーな待機を行っています。

タイマーを起動し、起動する間隔 (100000 ミリ秒) を指定してから、イベントのイベント ハンドラーでコードを実行しますTick

MSDN マガジンの .NET Framework クラス ライブラリのタイマー クラスの比較を参照してください。

于 2012-04-06T08:51:39.033 に答える
2

Odedが提案したタイマーを使用できます:

public partial class TestTimerClass : Form
{
    Timer timer1 = new Timer(); // Make the timer available for this class.
    public TestTimerClass()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Tick += timer1_Tick; // Assign the tick event
        timer1.Interval = 1000; // Set the interval of the timer in ms (1000 ms = 1 sec)
        timer1.Start(); // Start the timer
    }

    void timer1_Tick(object sender, EventArgs e)
    {
        System.Media.SystemSounds.Beep.Play();
        timer1.Stop(); //  Stop the timer (remove this if you want to loop the timer)
    }
}

編集:方法がわからない場合は、簡単なタイマーの作成方法をお見せしたいだけです:)

于 2012-04-06T08:58:04.110 に答える