public void TearDown()
 {
     _autoResetEvent.Dispose();
     _autoResetEvent = null;
     _gameLogic      = null;
     GameLogic.GameLogicStatusChangedEventHandler -= HandleGameLogicStatusChanged;
     _eventArgs = null;
     _sw        = null;
 }
        void HandleGameLogicStatusChanged(object sender, GameLogicStatusChangedEventArgs eventArgs)
        {
            _eventArgs = eventArgs;

            // wait until GameOver event
            if (_eventArgs.MessageType == GameLogicMessageType.GameOver)
            {
                _autoResetEvent.Set();
                _sw.Stop();
            }
            else
            {
                _gameLogic.ReturnControl(); // imitate communication
            }
        }