private void CheckState(object notUsed) { lock (lockObj) { UPnPState newState = this.state.CheckAndTransit(); while (newState != null && this.state != newState) { this.state = newState; newState = this.state.CheckAndTransit(); } if (newState == null) { logger.Debug("UPnP state checker reaches end state."); this.checkTimer.Change(Timeout.Infinite, Timeout.Infinite); return; } else { logger.Debug("Current state is " + newState.ToString() + ". Try again later.."); } } }