1. ホーム
  2. c#

[解決済み] C#の遅延機能

2022-02-03 18:34:42

質問

一連のコマンドの間に遅延を発生させる方法について理解する必要があります。私の背景はC(DOS)であり、現在はVisual Studio 2015でC#を使用して概念を復活させています。これは私が苦労しているコードです。

using System.Threading;

private void button1_Click(object sender, EventArgs e)      // Button
{
    int i;
    for (i = 0; i < 10; i++)
    {
        textBox1.BackColor = Color.Red;
        Thread.Sleep(100);
        textBox1.BackColor = Color.Yellow;
        Thread.Sleep(100);
    }
}

テキストボックスの背景色が10回ずつ交互に変わると思っていたのですが、ループ終了後に黄色しか表示されません。遅延時間を長くすると、プログラムが終了するまでに時間がかかることに気がつきます。関連記事をいくつか見てみましたが、要領がつかめませんでした。何かご教示いただければ幸いです。ありがとうございます。

どのように解決するのですか?

非同期メソッドを使用し、組み込みの Task.Delay メソッドを使用します。これにより、実行は一時停止され、指定された時間後に再開されます なし は現在のスレッドをブロックする。

async Task UseDelay()
{
    await Task.Delay(1000); // wait for 1 second
}

あなたの具体的なケースでは

async void button1_Click(object sender, EventArgs e)
{ 
    for (var i = 0; i < 10; i++) 
    {
        textBox1.BackColor = Color.Red;         
        await Task.Delay(100);
        textBox1.BackColor = Color.Yellow;    
        await Task.Delay(100);
    }
 }