示例#1
0
 private void RemoveExpirationTimer(string label)
 {
     if (ExpirationTimers.ContainsKey(label))
     {
         var timer = ExpirationTimers[label];
         timer.Elapsed -= CreateTimerNotification;
         timer.Close();
         ExpirationTimers.Remove(label);
     }
 }
示例#2
0
        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();
            }
        }