public static void Register(string Name, CronEventHandler handler, string CronSpec, bool Unique, CronLimit limit)
 {
     lock (m_Handlers.SyncRoot)
     {
         m_Handlers.Add(new CronEventEntry(Name, handler, new CronJob(CronSpec), Unique, limit));
     }
 }
 public CronEventEntry(string Name, CronEventHandler handler, CronJob Cronjob, bool Unique, CronLimit limit)
 {
     // infer a name from the handler passed in (if one was not supplied)
     m_Name    = (Name != null) ? Name : (handler != null && handler.Method != null && handler.Method.Name != null) ? handler.Method.Name : "Unknown";
     m_Unique  = Unique;
     m_Handler = handler;
     m_Cronjob = Cronjob;
     m_Limit   = limit;
 }
 public static void QueueTask(string Name, CronEventHandler handler, string CronSpec, bool Unique)
 {
     lock (m_TaskQueue.SyncRoot)
     {
         CronEventEntry task = new CronEventEntry(Name, handler, new CronJob(CronSpec), Unique, null);
         if (Unique == true)
         {                   // only one
             if (m_TaskQueue.Contains(task) == false)
             {
                 m_TaskQueue.Enqueue(task);
             }
         }
         else
         {
             m_TaskQueue.Enqueue(task);
         }
     }
 }
 public static void Register(string Name, CronEventHandler handler, string CronSpec, bool Unique)
 {
     Register(Name, handler, CronSpec, Unique, null);
 }
 public static void Register(string Name, CronEventHandler handler, string CronSpec)
 {
     Register(Name, handler, CronSpec, true);
 }
 // register a new job
 public static void Register(CronEventHandler handler, string CronSpec)
 {
     Register(null, handler, CronSpec, true);
 }
 public static void QueueTask(string Name, CronEventHandler handler, string CronSpec)
 {
     QueueTask(Name, handler, CronSpec, true);
 }
 public static void QueueTask(string Name, CronEventHandler handler)
 {
     QueueTask(Name, handler, null, true);
 }
		public static void QueueTask(string Name, CronEventHandler handler)
		{
			QueueTask(Name, handler, null, true);
		}
			public CronEventEntry(string Name, CronEventHandler handler, CronJob Cronjob, bool Unique, CronLimit limit)
			{
				// infer a name from the handler passed in (if one was not supplied)
				m_Name = (Name != null) ? Name : (handler != null && handler.Method != null && handler.Method.Name != null) ? handler.Method.Name : "Unknown"; 
				m_Unique = Unique;
				m_Handler = handler;
				m_Cronjob = Cronjob;
				m_Limit = limit;
			}
		public static void Register(string Name, CronEventHandler handler, string CronSpec, bool Unique, CronLimit limit)
		{
			lock (m_Handlers.SyncRoot)
			{
				m_Handlers.Add(new CronEventEntry(Name, handler, new CronJob(CronSpec), Unique, limit));
			}
		}
		public static void Register(string Name, CronEventHandler handler, string CronSpec, bool Unique)
		{
			Register(Name, handler, CronSpec, Unique, null);
		}
		public static void Register(string Name, CronEventHandler handler, string CronSpec)
		{
			Register(Name, handler, CronSpec, true);
		}
		// register a new job
		public static void Register(CronEventHandler handler, string CronSpec)
		{
			Register(null, handler, CronSpec, true);
		}
		public static void QueueTask(string Name, CronEventHandler handler, string CronSpec, bool Unique)
		{
			lock (m_TaskQueue.SyncRoot)
			{
				CronEventEntry task = new CronEventEntry(Name, handler, new CronJob(CronSpec), Unique, null);
				if (Unique == true)
				{   // only one
					if (m_TaskQueue.Contains(task) == false)
						m_TaskQueue.Enqueue(task);
				}
				else
					m_TaskQueue.Enqueue(task);
			}
		}
		public static void QueueTask(string Name, CronEventHandler handler, string CronSpec)
		{
			QueueTask(Name, handler, CronSpec, true);
		}
 public static void QueueIdleTask(CronEventHandler handler)
 {
     QueueIdleTask(null, handler, null, true);
 }
		public static void QueueIdleTask(CronEventHandler handler)
		{
			QueueIdleTask(null, handler, null, true);
		}