public static void OnIdle(object sender, EventArgs e) { var gameIsRunning = StateManager.Instance.IsGameRunning(); // TODO: What is the use of this function NativeFunction.Message message; do { var currentTime = _chrono.Elapsed; var currentElapsedTime = currentTime - _lastTimeSpan; _lastTimeSpan = currentTime; _elapsedTime += currentElapsedTime; if (_elapsedTime >= _wantedElapsedTime) { lock (Lock) { StateManager.Instance.Run((double)_elapsedTime.Ticks / TimeSpan.TicksPerSecond); _elapsedTime = TimeSpan.Zero; } } } while (!NativeFunction.PeekMessage(out message, IntPtr.Zero, 0, 0, 0) && gameIsRunning); }