13

タイマーを使用してメソッドでイベントを遅延させようとしていますが、タイマーを使用して待機する方法を必ずしも理解していません。

タイマーを 2 秒に設定しましたが、このコードを実行すると、最後の呼び出しが 2 秒の遅延なしで実行されます。

Timer timer = new Timer();
timer.Tick += new EventHandler(timer_Tick); // Everytime timer ticks, timer_Tick will be called
timer.Interval = (1000) * (2);              // Timer will tick evert second
timer.Enabled = true;                       // Enable the timer


void timer_Tick(object sender, EventArgs e)
{
    timer.Stop();
}

private void button1_Click(object sender, EventArgs e)
{
    label1.Text = "first";
    timer.Start();
    label1.Text = "second";
}

したがって、ボタンをクリックすると、「最初」に変更して2秒待ってから「2番目」に変更するのではなく、すぐにlabel1が「2番目」として表示されます。ここで、thread.sleep の代わりにタイマーを使用することについて多くのスレッドを読みましたが、実際にそれを実装する方法を見つけたり理解したりすることはできません。

4

4 に答える 4

12

C# 5.0 を使用している場合はawait、これがはるかに簡単になります。

private async void button1_Click(object sender, EventArgs e)
{
    label1.Text = "first";
    await Task.Delay(2000);
    label1.Text = "second";
}
于 2013-01-02T17:10:11.053 に答える