/// <summary> /// 添加新任务 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> /// <param name="onError">任务执行出错委托,停止任务参数null</param> /// <param name="runTime">执行时间</param> private void add(object run, thread.callType type, Action <Exception> onError, DateTime runTime) { bool isThread = false; long runTimeTicks = runTime.Ticks; Monitor.Enter(taskLock); try { taskHeap.Push(runTimeTicks, new taskInfo { Call = run, Type = type, OnError = onError }); if (runTimeTicks < nearTime) { timer.Stop(); nearTime = runTimeTicks; double time = (runTime - date.Now).TotalMilliseconds + 1; if (time > 0) { timer.Interval = Math.Min(time, int.MaxValue); timer.Start(); } else { isThread = true; } } } finally { Monitor.Exit(taskLock); } if (isThread) { threadPool.FastStart(this, thread.callType.TimerTaskRun); } }
/// <summary> /// 添加任务 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> /// <param name="runTime">执行时间</param> /// <returns>任务信息,null表示不可取消</returns> internal task Add(object run, thread.callType type, DateTime runTime) { if (runTime > date.Now) { task task = new task(run, type); add(task, runTime); return(task); } threadPool.FastStart(run, type); return(null); }
/// <summary> /// 添加任务 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> /// <param name="runTime">执行时间</param> internal void Add(object run, thread.callType type, DateTime runTime) { if (runTime > date.Now) { add(run, type, null, runTime); } else { threadPool.FastStart(run, type); } }
/// <summary> /// 添加任务 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> /// <param name="runTime">执行时间</param> internal void Add(object run, thread.callType type, DateTime runTime) { add(run, type, null, runTime); }
public void Set(object call, thread.callType type) { Call = call; Type = type; }
public void Cancel() { Type = thread.callType.None; Call = null; OnError = null; }
public void Set(object call, thread.callType type, Action <Exception> onError) { Call = call; Type = type; OnError = onError; }
internal bool Add(object run, thread.callType type) { return(Add(new taskInfo { Call = run, Type = type })); }
/// <summary> /// 任务信息 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> /// <param name="onError">任务执行出错委托,停止任务参数null</param> internal task(object run, thread.callType type, Action <Exception> onError) { Task.Set(run, type, onError); }
/// <summary> /// 任务信息 /// </summary> /// <param name="run">任务执行委托</param> /// <param name="type">调用类型</param> internal task(object run, thread.callType type) { Task.Set(run, type); }