Exemple #1
0
        /// <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));
            }
        }