/// <summary> /// Called for each time the timer ticks. /// </summary> /// <param name="State"></param> public void Run(object State) { try { if (_disabled) { return; } if (_timerRunning) { _timerLagging = true; return; } _resetEvent.Reset(); // BEGIN CODE List <UserCache> CacheList = NeonEnvironment.GetGame().GetCacheManager().GetUserCache().ToList(); if (CacheList.Count > 0) { foreach (UserCache Cache in CacheList) { try { if (Cache == null) { continue; } UserCache Temp = null; if (Cache.isExpired()) { NeonEnvironment.GetGame().GetCacheManager().TryRemoveUser(Cache.Id, out Temp); } Temp = null; } catch (Exception e) { Logging.LogCacheException(e.ToString()); } } } CacheList = null; List <Habbo> CachedUsers = NeonEnvironment.GetUsersCached().ToList(); if (CachedUsers.Count > 0) { foreach (Habbo Data in CachedUsers) { try { if (Data == null) { continue; } Habbo Temp = null; if (Data.CacheExpired()) { NeonEnvironment.RemoveFromCache(Data.Id, out Temp); } if (Temp != null) { Temp.Dispose(); } Temp = null; } catch (Exception e) { Logging.LogCacheException(e.ToString()); } } } CachedUsers = null; // END CODE // Reset the values _timerRunning = false; _timerLagging = false; _resetEvent.Set(); } catch (Exception e) { Logging.LogCacheException(e.ToString()); } }