/ / Ako vytvoriť oneskorenie pre príkaz v c #? - c #, čas, časovač, oneskorenie, perióda

Ako vytvoriť oneskorenie pre príkaz v c #? - c #, čas, časovač, oneskorenie, čas

Chcem vložiť oneskorenie pre zmenu farbytlačidlo pre 2000 milisekund v mojej hre App v c # ... čo príkaz mám použiť pre to? (Chcem zmeniť farbu tlačidla na 2 sekundy a potom sa vrátiť do normálneho stavu) ďakujem

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

odpovede:

2 pre odpoveď č. 1

Tu je jeden spôsob, ako to môžete urobiť 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;
}
}

Poznámka: tento kód používať. Net verzie 4.5 a vyššie.


0 pre odpoveď č. 2

Použite a Timer riadiť proces zmeny farby a likvidovaťpo každej zmene, ak si to „často nebudete meniť“, pretože ste si neuvedomili, kde chcete zmeniť farbu, umiestnil som kód do Button.

private Color _originalColor = Color.LightGray;
private Color _newColor = Color.LightSkyBlue;
private bool _isOrigColor = true;
Timer _tmrChangeColor;

private void btnTest_Click(object sender, EventArgs e)
{
if (_tmrChangeColor != null) return;
_tmrChangeColor = new Timer {Interval = 2000, Enabled = true};
_tmrChangeColor.Tick += _tmrChangeColor_Tick;
}

void _tmrChangeColor_Tick(object sender, EventArgs e)
{
btnTest.BackColor = _isOrigColor ? _newColor : _originalColor;
_isOrigColor = !_isOrigColor;
_tmrChangeColor.Dispose();
_tmrChangeColor = null;
}