/// <summary> /// 重置选举计时器 /// </summary> private void ResetElectionTimer() { var timeout = _configProviders.GetToCandidateTimeOut(); if (_electionTimer == null) { _electionTimer = new Timer(x => { try { //停止计时 _electionTimer.Change(Timeout.Infinite, Timeout.Infinite); BecomeCandidate(); } catch (Exception ex) { _logger.LogError(ex, ex.Message); } }, null, Convert.ToInt32(timeout.TotalMilliseconds), Convert.ToInt32(timeout.TotalMilliseconds)); } else { _electionTimer.Change(Convert.ToInt32(timeout.TotalMilliseconds), Convert.ToInt32(timeout.TotalMilliseconds)); } }