Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ProcessConcurrentTasks()

void System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ProcessConcurrentTasks ( )
inlineprivate

Definition at line 506 of file ConcurrentExclusiveSchedulerPair.cs.

507 {
508 try
509 {
510 m_threadProcessingMode.Value = ProcessingMode.ProcessingConcurrentTasks;
511 for (int i = 0; i < m_maxItemsPerTask; i++)
512 {
513 if (!m_concurrentTaskScheduler.m_tasks.TryDequeue(out var result))
514 {
515 break;
516 }
517 if (!result.IsFaulted)
518 {
520 }
522 {
523 break;
524 }
525 }
526 }
527 finally
528 {
529 m_threadProcessingMode.Value = ProcessingMode.NotCurrentlyProcessing;
531 {
532 if (m_processingCount > 0)
533 {
535 }
537 }
538 }
539 }

References System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler.ExecuteTask(), System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.m_concurrentTaskScheduler, System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.m_exclusiveTaskScheduler, System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.m_maxItemsPerTask, System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.m_processingCount, System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ConcurrentExclusiveTaskScheduler.m_tasks, System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ProcessAsyncIfNecessary(), and System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.ValueLock.

Referenced by System.Threading.Tasks.ConcurrentExclusiveSchedulerPair.SchedulerWorkItem.Execute().