private void RemoveExpirationTimer(string label) { if (ExpirationTimers.ContainsKey(label)) { var timer = ExpirationTimers[label]; timer.Elapsed -= CreateTimerNotification; timer.Close(); ExpirationTimers.Remove(label); } }
private void SetExpirationTimer(Item item) { // Clear any existing timer. RemoveExpirationTimer(item.Label); // Calculate the timer duration. var now = DateTime.Now; var expirationInterval = item.Expiration - now; // If it's already expired if (item.Expiration <= now) { var notification = new Notification { AffectedItem = item, Timestamp = DateTime.Now, Type = NotificationType.ItemExpired }; Notifications.Enqueue(notification); } //Start the expiration timer otherwise else { var newTimer = new NotificationTimer(item) { Interval = expirationInterval.TotalMilliseconds, // Interval is in miliseconds. AutoReset = false, }; // Add our timer event to our timer, and add our timer to the timer collection. newTimer.Elapsed += CreateTimerNotification; ExpirationTimers.Add(item.Label, newTimer); // Start the timer. newTimer.Start(); } }