示例#1
0
        private void OnTimedEvent(SafeTimer_SINGLE sender)
        {
            ArrayList eventList = new ArrayList();

            lock (MonitorLock)
            {
                while (MonitorList.Count > 0 && ((DateTime)MonitorList.GetKey(0)).CompareTo(DateTime.Now.AddSeconds(0.05)) < 0)
                {
                    eventList.Add(MonitorList.GetByIndex(0));
                    MonitorList.RemoveAt(0);
                }
            }
            foreach (object obj in eventList)
            {
                OnExpiredEvent.Fire(this, obj);
            }
            lock (MonitorLock)
            {
                if (MonitorList.Count > 0)
                {
                    /*
                     *                  TimeSpan nextEventTime = ((DateTime)MonitorList.GetKey(0)).Subtract(DateTime.Now);
                     *                  if (nextEventTime.TotalMilliseconds<=0)
                     *                  {
                     *                          SafeNotifyTimer.Interval = 1;
                     *                  }
                     *                  else
                     *                  {
                     *                          SafeNotifyTimer.Interval = (int)nextEventTime.TotalMilliseconds;
                     *                  }
                     *                  SafeNotifyTimer.Start();
                     */
                }
            }
        }
示例#2
0
 private void __NotifyCheck(SafeTimer_SINGLE sender)
 {
     if (OnRefresh != null)
     {
         OnRefresh();
     }
     int MinVal = (int)((double)SSDP_EXPIRATION * 0.25 * 1000);
     int MaxVal = (int)((double)SSDP_EXPIRATION * 0.45 * 1000);
     //NotifyTimer.Interval = RND.Next(MinVal, MaxVal);
 }