Example #1
0
 private void RefreshIfNecessary()
 {
     if (NeedsUpdate(maxAgeMs))
     {
         lock (myLock)
         {
             if (NeedsUpdate(maxAgeMs))
             {
                 Reload();
             }
         }
     }
     else if (NeedsUpdate(minAgeMs))
     {
         if (updateCounter == 0)
         {
             SetTimeout.OnBackground(() =>
             {
                 if (NeedsUpdate(minAgeMs))
                 {
                     if (updateCounter == 0)
                     {
                         lock (myLock)
                         {
                             if (NeedsUpdate(minAgeMs))
                             {
                                 Reload();
                             }
                         }
                     }
                 }
             }, 0, ReportException);
         }
     }
 }
Example #2
0
        private void RefreshIfNecessary()
        {
            CachedInstance ci = current;

            if (ci == null || updateTimer.ElapsedMilliseconds - ci.createdAt >= maxAgeMs)
            {
                lock (myLock)
                {
                    ci = current;
                    if (ci == null || updateTimer.ElapsedMilliseconds - ci.createdAt >= maxAgeMs)
                    {
                        current = new CachedInstance(createNewObjectFunc(), updateTimer);
                    }
                }
            }
            else if (updateTimer.ElapsedMilliseconds - ci.createdAt >= minAgeMs)
            {
                SetTimeout.OnBackground(() =>
                {
                    ci = current;
                    if (updateTimer.ElapsedMilliseconds - ci.createdAt >= minAgeMs)
                    {
                        lock (myLock)
                        {
                            ci = current;
                            if (updateTimer.ElapsedMilliseconds - ci.createdAt >= minAgeMs)
                            {
                                current = new CachedInstance(createNewObjectFunc(), updateTimer);
                            }
                        }
                    }
                }, 0);
            }
        }