Esempio n. 1
0
 private bool EnsureValidTimer(BitsTimer timer, out TimerDetails details)
 {
     if (timerDetailsDictionary.ContainsKey(timer.Name) &&
         timerDetailsDictionary[timer.Name] != null)
     {
         details = timerDetailsDictionary[timer.Name];
     }
     else
     {
         log.WarnFormat("Timer details are not found ({0}).  Removing timer from collection.", timer.Name);
         TryRemoveTimer(timer);
         details = null;
         return false;
     }
     return true;
 }
Esempio n. 2
0
 private void TryRemoveTimer(BitsTimer timer)
 {
     lock (s_lock)
     {
         if (timerDictionary.ContainsValue(timer))
         {
             bool ifFound = false;
             foreach (string key in timerDictionary.Keys)
             {
                 if (timerDictionary[key].Equals(timer))
                 {
                     timerDictionary.Remove(key);
                     ifFound = true;
                 }
                 if (ifFound)
                     log.InfoFormat("Timer removed from timerCollection ({0})", timer.Name);
                 else
                     log.WarnFormat("Timer not removed from timerCollection ({0})", timer.Name);
             }
         }
         else
             log.WarnFormat("Timer not removed from timersCollection ({0})", timer.Name);
     }
 }
Esempio n. 3
0
        public void AddTimer(IJob job, TimerDetails detail, bool autoStart)
        {
            ElapsedEventHandler elapsedEventHandler = new ElapsedEventHandler(EventReceivedHandler);

            //define timer
            BitsTimer timer = null;
            if (!timerDictionary.ContainsKey(detail.Key))
            {
                timer = new BitsTimer();
                timer.BeginInit();
                timer.AutoReset = detail.IfAutoReset;
                timer.Enabled = detail.IfEnabled && !detail.IsJamsEnabled;
                timer.Interval = detail.Interval;
                timer.Name = detail.JobName;
                timer.ScheduledTime = GetUniqueTime(timerDictionary, detail.RunTime);
                timer.WeeklySchedule = detail.WeeklySchedule;
                timer.Elapsed += elapsedEventHandler;
                timer.EndInit();

                lock (s_lock)
                {
                    timerDictionary[detail.Key] = timer;
                    timerDictionary[detail.Key] = timer;
                    timerDetailsDictionary[detail.JobName] = detail;
                }
                timerDictionary[detail.Key].Start();
            }
            else
                timer = timerDictionary[detail.Key];

            if (detail.JobName == null)
                detail.JobName = "GenericTimer";

            if (job != null)
                TimeManager.InstanceOf().timerJobs[timer.ToString()] = job.JobName;

            log.InfoFormat(@"Timer {0} created", timer.ToString());
        }