示例#1
0
        /// <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);
            }
        }
示例#2
0
 /// <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);
 }
示例#3
0
 /// <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);
     }
 }
示例#4
0
 /// <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);
 }
示例#5
0
 public void Set(object call, thread.callType type)
 {
     Call = call;
     Type = type;
 }
示例#6
0
 public void Cancel()
 {
     Type    = thread.callType.None;
     Call    = null;
     OnError = null;
 }
示例#7
0
 public void Set(object call, thread.callType type, Action <Exception> onError)
 {
     Call    = call;
     Type    = type;
     OnError = onError;
 }
示例#8
0
 internal bool Add(object run, thread.callType type)
 {
     return(Add(new taskInfo {
         Call = run, Type = type
     }));
 }
示例#9
0
 /// <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);
 }
示例#10
0
 /// <summary>
 /// 任务信息
 /// </summary>
 /// <param name="run">任务执行委托</param>
 /// <param name="type">调用类型</param>
 internal task(object run, thread.callType type)
 {
     Task.Set(run, type);
 }