示例#1
0
 private void Update(Action <bool> callback)
 {
     try
     {
         _serviceClient.BeginGetChangedScenarios(_lastUpdateTime,
                                                 (o) =>
         {
             var result = Handle(() => _serviceClient.EndGetChangedScenarios(o));
             if (result.Success && result.Value != null && result.Value.Any())
             {
                 var changedScenariosLW = result.Value;
                 var changedScenarios   = Scenarios.Where(x => changedScenariosLW.Any(z => z.ScenarioId == x.ScenarioId)).ToArray();
                 foreach (var changedScenario in changedScenariosLW)
                 {
                     var existingScenario = changedScenarios.FirstOrDefault(x => x.ScenarioId.Equals(changedScenario.ScenarioId));
                     if (existingScenario != null)
                     {
                         existingScenario.CurrentValue = changedScenario.CurrentValue;
                         existingScenario.IsAvailable  = changedScenario.IsAvailable;
                     }
                 }
                 _lastUpdateTime = result.ServerTime ?? _lastUpdateTime;
                 ScenariosChanged?.Invoke(changedScenarios);
             }
             callback?.Invoke(result.Success);
         }, null);
     }
     catch
     {
         callback?.Invoke(false);
     }
 }