Example #1
0
        private T DoWithRetry <T>(Func <T> func)
        {
            try
            {
                if (_cnn.RedisConnection.Repairing)
                {
                    throw new Exception($"SERedisOperation操作失败,sectionName:{_sectionName},_cnn:{SerializeHelper.Serialize(_cnn)}", new Exception("连接正在修复中"));
                }

                return(func());
            }
            catch (Exception ex)
            {
                if (ex.Message.IndexOf("SERedisOperation操作失败") > -1)
                {
                    throw ex;
                }

                if (!_cnn.RedisConnection.Repairing)
                {
                    _cnn.TryRepairConnection();
                }
                throw new Exception($"SERedisOperation操作失败,sectionName:{_sectionName},_cnn:{SerializeHelper.Serialize(_cnn)}", ex);
            }
        }