コード例 #1
0
 private void AddCompetitorProfile(URN id, SimpleTeamProfileDTO item, CultureInfo culture, bool useSemaphore)
 {
     if (_cache.Contains(id.ToString()))
     {
         try
         {
             var ci = (CompetitorCI)_cache.Get(id.ToString());
             if (useSemaphore)
             {
                 _semaphoreCacheMerge.Wait();
             }
             ci?.Merge(item, culture);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError($"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.", ex);
         }
         finally
         {
             if (useSemaphore && !_isDisposed)
             {
                 _semaphoreCacheMerge.Release();
             }
         }
     }
     else
     {
         _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));
     }
 }
コード例 #2
0
 private async Task AddCompetitorProfileAsync(URN id, SimpleTeamProfileDTO item, CultureInfo culture, bool useSemaphore)
 {
     if (_cache.Contains(id.ToString()))
     {
         try
         {
             var ci = (CompetitorCI)_cache.Get(id.ToString());
             if (useSemaphore)
             {
                 await WaitTillIdIsAvailableAsync(_mergeUrns, id).ConfigureAwait(false);
             }
             ci?.Merge(item, culture);
         }
         catch (Exception ex)
         {
             ExecutionLog.LogError(ex, $"Error adding competitor for id={id}, dto type={item?.GetType().Name} and lang={culture.TwoLetterISOLanguageName}.");
         }
         finally
         {
             if (useSemaphore && !_isDisposed)
             {
                 await ReleaseIdAsync(_mergeUrns, id).ConfigureAwait(false);
             }
         }
     }
     else
     {
         _cache.Add(id.ToString(), new CompetitorCI(item, culture, _dataRouterManager), GetCorrectCacheItemPolicy(id));
     }
 }