Search code examples
c#timetimerdelayperiod

How to create a delay for a command in c#?


I want to insert delay for changing color of button for 2000 milisecond in my game App in c# ... what command should I use for it ?? ( I want to changes color of button for 2 sec and then come back to normal state ) thank you

        switch (colorNum)
        {
            case 1:
                btnRed.BackColor = Color.Red

                btnRed.BackColor = Color.LightCoral;
                firedColors[count] = "Red";
                count++;
                break;
            case 2:
                btnBlue.BackColor = Color.Blue;

                btnRed.BackColor = Color.LightBlue;
                firedColors[count] = "Blue";
                count++;
                break;
            case 3:
                btnYellow.BackColor = Color.Gold;

                btnYellow.BackColor = Color.LightYellow;
                firedColors[count] = "Yellow";
                count++;
                break;
        }

Solution

  • Here is one way you can do it with async - await:

    using System.Threading.Tasks;
    
    async void YourFunction()   // <--- Use "async" keyword
    {
        switch (colorNum)
        {
            case 1:
                btnRed.BackColor = Color.Red;
                await Task.Delay(2000);
                btnRed.BackColor = Color.LightCoral;
                firedColors[count] = "Red";
                count++;
                break;
            case 2:
                btnBlue.BackColor = Color.Blue;
                await Task.Delay(2000);
                btnRed.BackColor = Color.LightBlue;
                firedColors[count] = "Blue";
                count++;
                break;
            case 3:
                btnYellow.BackColor = Color.Gold;
                await Task.Delay(2000);
                btnYellow.BackColor = Color.LightYellow;
                firedColors[count] = "Yellow";
                count++;
                break;
        }
    }
    

    Note: this code use .Net version 4.5 and above.