public bool this[DelayedTasks task]
 {
     get
     {
         lock (SynRoot)
         {
             if ((tasks & task) == task)
             {
                 return(true);
             }
             return(false);
         }
     }
     set
     {
         lock (SynRoot)
         {
             if (value)
             {
                 tasks |= task;
             }
             else
             {
                 tasks ^= task;
             }
         }
     }
 }
 public void StartTask(DelayedTasks task)
 {
     lock (SynRoot)
     {
         this[task] = true;
         //if (!base.Enabled)
         Stop();
         Start();
     }
 }
 public void StopTask(DelayedTasks task)
 {
     lock (SynRoot)
     {
         this[task] = false;
         if (AllTaskDone && base.Enabled)
         {
             Stop();
         }
     }
 }
 public void SetData(DelayedTasks task, object data)
 {
     lock (SynRoot)
     {
         if (taskData.ContainsKey(task))
         {
             taskData.Remove(task);
         }
         taskData.Add(task, data);
     }
 }
            public object GetData(DelayedTasks task, bool clear)
            {
                object data = null;

                lock (SynRoot)
                {
                    if (taskData.ContainsKey(task))
                    {
                        data = taskData[task];
                        if (clear)
                        {
                            taskData.Remove(task);
                        }
                    }
                }
                return(data);
            }