예제 #1
0
 /// <summary>
 /// This is needed for platform backends that don't have internal priority system (e. g. win32)
 /// To ensure that there are no jobs with higher priority
 /// </summary>
 /// <param name="currentPriority"></param>
 internal void EnsurePriority(DispatcherPriority currentPriority)
 {
     if (currentPriority == DispatcherPriority.MaxValue)
     {
         return;
     }
     currentPriority += 1;
     _jobRunner.RunJobs(currentPriority);
 }
예제 #2
0
 public void RunLoop(CancellationToken cancellationToken)
 {
     while (!cancellationToken.IsCancellationRequested)
     {
         _evnt.WaitOne();
         if (cancellationToken.IsCancellationRequested)
         {
             return;
         }
         Signaled?.Invoke();
         _timerJobRunner.RunJobs();
     }
 }
예제 #3
0
 /// <summary>
 /// Use this method to ensure that more prioritized tasks are executed
 /// </summary>
 /// <param name="minimumPriority"></param>
 public void RunJobs(DispatcherPriority minimumPriority) => _jobRunner.RunJobs(minimumPriority);
예제 #4
0
 /// <summary>
 /// Runs continuations pushed on the loop.
 /// </summary>
 public void RunJobs()
 {
     _jobRunner?.RunJobs(null);
 }