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

◆ FinishPhase()

void System.Threading.Barrier.FinishPhase ( bool observedSense)
inlineprivate

Definition at line 342 of file Barrier.cs.

343 {
344 if (_postPhaseAction != null)
345 {
346 try
347 {
348 _actionCallerID = Environment.CurrentManagedThreadId;
349 if (_ownerThreadContext != null)
350 {
352 ExecutionContext.Run(_ownerThreadContext, callback, this);
353 }
354 else
355 {
356 _postPhaseAction(this);
357 }
358 _exception = null;
359 return;
360 }
361 catch (Exception exception)
362 {
364 return;
365 }
366 finally
367 {
368 _actionCallerID = 0;
369 SetResetEvents(observedSense);
370 if (_exception != null)
371 {
372 throw new BarrierPostPhaseException(_exception);
373 }
374 }
375 }
376 SetResetEvents(observedSense);
377 }
static void InvokePostPhaseAction(object obj)
Definition Barrier.cs:379
void SetResetEvents(bool observedSense)
Definition Barrier.cs:385
readonly Action< Barrier > _postPhaseAction
Definition Barrier.cs:23
readonly ExecutionContext _ownerThreadContext
Definition Barrier.cs:19
delegate void ContextCallback(object? state)

References System.Threading.Barrier._actionCallerID, System.Threading.Barrier._exception, System.Threading.Barrier._ownerThreadContext, System.Threading.Barrier._postPhaseAction, System.Threading.ContextCallback(), System.Environment.CurrentManagedThreadId, System.exception, System.Threading.Barrier.InvokePostPhaseAction(), System.Threading.ExecutionContext.Run(), and System.Threading.Barrier.SetResetEvents().

Referenced by System.Threading.Barrier.RemoveParticipants(), and System.Threading.Barrier.SignalAndWait().