void OnGameStateChanged(object sender, SimonEventArgs e) { Task.Run(async() => { switch (e.GameState) { case GameState.Start: break; case GameState.NextLevel: await ShowStartAnimation(); await ShowNextLevelAnimation(game.Level); await ShowSequenceAnimation(game.Level); break; case GameState.GameOver: await ShowGameOverAnimation(); game.Reset(); break; case GameState.Win: await ShowGameWonAnimation(); break; } }); }
void OnGameStateChanged(object sender, SimonEventArgs e) { var th = new Thread(() => { lock (lockObject) { switch (e.GameState) { case GameState.Start: break; case GameState.NextLevel: this.ShowStartAnimation(); this.ShowNextLevelAnimation(game.Level); this.ShowSequenceAnimation(game.Level); break; case GameState.GameOver: this.ShowGameOverAnimation(); this.game.Reset(); break; case GameState.Win: this.ShowGameWonAnimation(); break; } } }); th.Start(); }