public void ExecuteThread(object obj) { var player = obj as DefaultPlayer; do { lock (_locker) { player.GetNextNumber(); _standardNumber = player.GetCurrentNumber(); if (_message != null) { _message(new PlayerInfo(player.Name, player.GetType().Name, player.GetCurrentNumber(), _attempts++, StopGame.GetTime())); } } PauseGame.PauseThread(player, 1); } while (!StopGame.HasACorrectAnsver(_standardNumber) && !StopGame.IsAttemptLimit(_attempts, 100) && !StopGame.IsTimeOut(1500)); }