private void OnGameControllerTerminated(object sender, EventArgs args) { var gameController = sender as IGameController; if (gameController == null) { return; } gameController.Terminated -= OnGameControllerTerminated; Interlocked.CompareExchange(ref _gameController, null, gameController); _app.DoEvents(); GC.Collect(2, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); UpdateCommands(); }