public async Task Get(bool reload) { try { if (reload) { _version = 0; } var islocalcache = false; var apiurl = await _httpUrlRepository.GetApiUrl(_version); var client = _httpClientFactory.CreateClient(); // 创建http请求 var response = await client.SendAsync(new HttpRequestMessage(HttpMethod.Get, apiurl)); response.EnsureSuccessStatusCode(); var content = await response.Content.ReadAsStringAsync(); var apiResult = _jsonHepler.DeserializeObject <ApiResult>(content); if (apiResult.ErrorCode == "000000" && apiResult.Version > _version) { foreach (var kv in apiResult.KV) { Data.AddOrUpdate(kv.Key, kv.Value, (x, y) => kv.Value); } _version = apiResult.Version; islocalcache = true; // 注册数据更新监听通知 foreach (var _lits in DataChangeListenerDictionary.ToList()) { _lits.OnDataChange(apiResult.KV); } } if (islocalcache) { _localDataRepository.Set(Data); } } catch (Exception ex) { _logger.LogError(ex, $"加载配置错误"); foreach (var kv in _localDataRepository.Get()) { Data.AddOrUpdate(kv.Key, kv.Value, (x, y) => kv.Value); } } }
public void AddChangeListener(IDataChangeListener dataChangeListener) { DataChangeListenerDictionary.Add(dataChangeListener); }