private void Timer_Elapsed(object sender, ElapsedEventArgs e) { List <ushort> list = new List <ushort>(); DateTime now = DateTime.UtcNow; var query = container.Where(c => c.Value < now); if (query != null) { foreach (var item in query) { if (container.ContainsKey(item.Key)) { list.Add(item.Key); } } ushort[] ids = list.ToArray(); foreach (var item in list) { container.Remove(item); } if (ids != null && ids.Length > 0) { OnExpired?.Invoke(this, new LifetimeEventArgs(ids)); } } if (container.Count == 0) { timer.Enabled = false; } }
/// <summary> /// Handles exceptions /// </summary> /// <param name="message"></param> internal static void ExceptionHandle(NetIncomingMessage message, String reason) { Handshake.Contents contents; switch ((message.SenderConnection.Tag as Handshake).HandshakeState) { case Handshake.State.Failed: contents = Handshake.Contents.Error; OnError.Invoke(reason); break; case Handshake.State.Expired: contents = Handshake.Contents.Expired; OnExpired.Invoke(reason); break; case Handshake.State.Denied: contents = Handshake.Contents.Denied; OnDenied.Invoke(reason); break; default: contents = Handshake.Contents.Error; OnError.Invoke(reason); break; } var result = Create(message.SenderConnection, contents); result.Write(reason); message.SenderConnection.SendMessage(result, NetDeliveryMethod.ReliableUnordered, 0); }
private void OnRemovedFromCache(CacheEntryRemovedArguments args) { if (args.RemovedReason == CacheEntryRemovedReason.Expired) { string key = args.CacheItem.Key.Replace($"{name}:key=", ""); OnExpired?.Invoke(this, new CacheItemExpiredEventArgs(name, key, args.CacheItem.Value)); } }
internal HttpSession(string id) : base() { this.ID = id; this.Expired = DateTime.Now.AddMinutes(20); timer = new Timer(new TimerCallback((o) => { OnExpired?.Invoke((HttpSession)o); }), this, (long)(new TimeSpan(0, 20, 0).TotalMilliseconds), -1); }
public KeyCacheItem(object key, DateTime expired) { this.Key = key; this.Expired = expired; timer = new Timer(new TimerCallback((k) => { OnExpired?.Invoke((KeyCacheItem)k); }), this, (int)(expired - DateTime.Now).TotalMilliseconds, -1); }
public KeyCacheItem(object key, DateTime expired) { this.Key = key; this.Expired = expired; TaskHelper.LongRunning(() => { while (true) { if ((expired - DateTimeHelper.Now).TotalMilliseconds <= 0) { OnExpired?.Invoke(this); break; } Thread.Sleep(1000); } }); }
private IEnumerator CountdownCoroutine() { while (RemainingTime > AlertLimitTime) { RemainingTime -= Time.deltaTime; OnUpdatedCountdown?.Invoke(RemainingTime); yield return(null); } OnAlertTime?.Invoke(this); while (RemainingTime > 0) { RemainingTime -= Time.deltaTime; OnUpdatedCountdown?.Invoke(RemainingTime); yield return(null); } OnExpired?.Invoke(this); ResetCountdown(); }