Hi I am trying to make a "flash animation" where the screen turns white for a fraction of a second, and then goes back to normal.
Here is my code:
private void QuickFallAnimation ()
{
plGame.BackColor = Color.White;
Thread.Sleep(50);
plGame.BackColor = Color.Black;
}
The problem is that background-color never changes to white. It just stays black even though the rest of the application pauses for 50 milliseconds. Can anyone help?
The reason for the problem is that your putting your UI thread to sleep. While sleeping the UI is blocked and cannot do a re-render. Never block the UI thread.
changing the code to use async/await should fix the issue:
private async Task QuickFallAnimation ()
{
plGame.BackColor = Color.White;
await Task.Delay(50);
plGame.BackColor = Color.Black;
}
You might also need to manually trigger a re-render, something like plGame.Invalidate();
The same could be done with a timer. Task.Delay is simply a wrapper around a timer that is sometimes convenient to use. But for more complex animations, a timer might be more appropriate.