Beispiel #1
0
        public TaskScheduler(Func <IJobQueue> JobQueueFactory, ITimeProvider timeProvider = null, Thread mainThread = null)
        {
            MainThread   = mainThread ?? Thread.CurrentThread;
            TimeProvider = timeProvider ?? Time.DefaultTimeProvider;

            BackgroundTaskOnComplete       = _BackgroundTaskOnComplete;
            OnResolvedDispatcher           = _OnResolvedDispatcher;
            OnResolvedDispatcher_SkipQueue = _OnResolvedDispatcher_SkipQueue;

            mOnResolvedDispatcher_SkipQueue = GetType().GetMethod("_OnResolvedDispatcher_SkipQueue_Generic", BindingFlags.Instance | BindingFlags.NonPublic);

            _JobQueue    = JobQueueFactory();
            _SleepWorker = new Internal.WorkerThread <PriorityQueue <SleepItem> >(
                SleepWorkerThreadFunc, ThreadPriority.AboveNormal, "TaskScheduler Sleep Provider"
                );

            SynchronizationContext = new TaskSchedulerSynchronizationContext(this);

            if (!_Default.IsValueCreated)
            {
                _Default.Value = this;
                WorkItemQueueTarget.SetDefaultIfNone(this);
            }
            else
            {
                _Default.Value = null;
            }
        }
Beispiel #2
0
 public Texture2DProvider(IResourceProviderStreamSource source, RenderCoordinator coordinator)
     : base(
         source, coordinator,
         enableThreadedCreate: false, enableThreadedPreload: true
         )
 {
     DisposeHandler = _DisposeHandler;
 }