/// <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); } } }
/// <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); } }