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

◆ Execute()

void IThreadPoolWorkItem. System.Threading.Tasks.AwaitTaskContinuation.Execute ( )
inlineprivateinherited

Implements System.Threading.IThreadPoolWorkItem.

Definition at line 75 of file AwaitTaskContinuation.cs.

76 {
77 TplEventSource log = TplEventSource.Log;
78 ExecutionContext capturedContext = m_capturedContext;
79 if (!log.IsEnabled() && capturedContext == null)
80 {
81 m_action();
82 return;
83 }
84 Guid oldActivityThatWillContinue = default(Guid);
85 if (log.IsEnabled() && log.TasksSetActivityIds && m_continuationId != 0)
86 {
87 Guid activityId = TplEventSource.CreateGuidForTaskID(m_continuationId);
88 EventSource.SetCurrentThreadActivityId(activityId, out oldActivityThatWillContinue);
89 }
90 try
91 {
92 if (capturedContext == null || capturedContext.IsDefault)
93 {
94 m_action();
95 }
96 else
97 {
98 ExecutionContext.RunForThreadPoolUnsafe(capturedContext, s_invokeAction, in m_action);
99 }
100 }
101 finally
102 {
103 if (log.IsEnabled() && log.TasksSetActivityIds && m_continuationId != 0)
104 {
105 EventSource.SetCurrentThreadActivityId(oldActivityThatWillContinue);
106 }
107 }
108 }
static void SetCurrentThreadActivityId(Guid activityId)
static readonly Action< Action > s_invokeAction

References System.Threading.Tasks.TplEventSource.CreateGuidForTaskID(), System.Threading.ExecutionContext.IsDefault, System.Diagnostics.Tracing.EventSource.IsEnabled(), System.Threading.Tasks.TplEventSource.Log, System.Threading.Tasks.AwaitTaskContinuation.m_action, System.Threading.Tasks.AwaitTaskContinuation.m_capturedContext, System.Threading.Tasks.AwaitTaskContinuation.m_continuationId, System.Threading.Tasks.AwaitTaskContinuation.s_invokeAction, System.Diagnostics.Tracing.EventSource.SetCurrentThreadActivityId(), and System.Threading.Tasks.TplEventSource.TasksSetActivityIds.