/// <summary>
 /// Stops a task.
 /// </summary>
 /// <param name="name">the indentifier of task.</param>
 public void StopTask(string name)
 {
     lock (_latchLock)
     {
         if (_taskDict.ContainsKey(name))
         {
             TimerBasedTask task = _taskDict[name];
             task.Stopped = true;
             task.Timer.Dispose();
             _taskDict.Remove(name);
         }
     }
 }
예제 #2
0
 /// <summary>
 /// 开始一个调度任务
 /// </summary>
 /// <param name="name">任务名</param>
 /// <param name="action">任务操作</param>
 /// <param name="dueTime">在多久时间后开始</param>
 /// <param name="period">执行时间间隔</param>
 public void StartTask(string name, Action action, int dueTime, int period)
 {
     lock (sync)
     {
         if (_taskDict.ContainsKey(name))
         {
             return;
         }
         var timer = new Timer(TaskCallback, name, Timeout.Infinite, Timeout.Infinite);
         var task  = new TimerBasedTask
         {
             Name    = name,
             Action  = action,
             Timer   = timer,
             DueTime = dueTime,
             Period  = period,
             Stopped = false
         };
         _taskDict.Add(name, task);
         timer.Change(dueTime, period);
     }
 }