Пример #1
0
 public static Task RunAsync(Action action,
                             ThreadTaskPriority priority = ThreadTaskPriority.Normal,
                             bool singleConcurrencyRun   = false)
 {
     if (IsShuttingDown)
     {
         return(null);
     }
     return(Task.Factory.StartNew(action, CancellationToken.None, TaskCreationOptions.None, getScheduler(priority, singleConcurrencyRun)));
 }
Пример #2
0
        public static Task <TResult> RunAsync <TResult>(Func <TResult> func,
                                                        Action <Task <TResult> > CallBack = null,
                                                        ThreadTaskPriority priority       = ThreadTaskPriority.Normal,
                                                        bool singleConcurrencyRun         = false)
        {
            if (IsShuttingDown)
            {
                return(null);
            }
            Task <TResult> t = Task.Factory.StartNew(func, CancellationToken.None, TaskCreationOptions.None, getScheduler(priority, singleConcurrencyRun));

            if (CallBack != null)
            {
                t.ContinueWith(CallBack);
            }
            return(t);
        }
Пример #3
0
        private static TaskScheduler getScheduler(ThreadTaskPriority priority, bool singleConcurrencyRun)
        {
            if (singleConcurrencyRun)
            {
                return(_monoConcurrencyTaskSheduler);
            }
            switch (priority)
            {
            case ThreadTaskPriority.High:
                return(_highPrioritySchedduler);

            case ThreadTaskPriority.Normal:
                return(_normalPrioritySchedduler);

            case ThreadTaskPriority.Low:
                return(_lowPrioritySchedduler);

            default:
                return(_normalPrioritySchedduler);
            }
        }