I'm programming a simple traffic signal and thought it would look nicer if you could press the "Switch" button one time and go from red to yellow to green instead of having to press it every time. However, now when I run the program, instead of waiting 0,75 seconds to draw the yellow and then another 0,75 seconds to draw the green, it waits 1,5 seconds and goes from red to green directly, not showing the yellow at all.

Calling the Invalidate method does not force a synchronous paint; to
force a synchronous paint, call the Update method after calling the
Invalidate method. When this method is called with no parameters, the
entire client area is added to the update region.