private static Action OutputWaitEtwEvents(Task task, Action continuation) { if (Task.s_asyncDebuggingEnabled) { Task.AddToActiveTasks(task); } TplEtwProvider etwLog = TplEtwProvider.Log; if (etwLog.IsEnabled()) { Task internalCurrent = Task.InternalCurrent; Task continuationTask = AsyncMethodBuilderCore.TryGetContinuationTask(continuation); etwLog.TaskWaitBegin(internalCurrent != null ? internalCurrent.m_taskScheduler.Id : TaskScheduler.Default.Id, internalCurrent != null ? internalCurrent.Id : 0, task.Id, TplEtwProvider.TaskWaitBehavior.Asynchronous, continuationTask != null ? continuationTask.Id : 0, Thread.GetDomainID()); } return(AsyncMethodBuilderCore.CreateContinuationWrapper(continuation, (Action)(() => { if (Task.s_asyncDebuggingEnabled) { Task.RemoveFromActiveTasks(task.Id); } Guid oldActivityThatWillContinue = new Guid(); int num = etwLog.IsEnabled() ? 1 : 0; if (num != 0) { Task internalCurrent = Task.InternalCurrent; etwLog.TaskWaitEnd(internalCurrent != null ? internalCurrent.m_taskScheduler.Id : TaskScheduler.Default.Id, internalCurrent != null ? internalCurrent.Id : 0, task.Id); if (etwLog.TasksSetActivityIds && (task.Options & (TaskCreationOptions)1024) != TaskCreationOptions.None) { EventSource.SetCurrentThreadActivityId(TplEtwProvider.CreateGuidForTaskID(task.Id), out oldActivityThatWillContinue); } } continuation(); if (num == 0) { return; } etwLog.TaskWaitContinuationComplete(task.Id); if (!etwLog.TasksSetActivityIds || (task.Options & (TaskCreationOptions)1024) == TaskCreationOptions.None) { return; } EventSource.SetCurrentThreadActivityId(oldActivityThatWillContinue); }), (Task)null)); }
// Token: 0x06005D28 RID: 23848 RVA: 0x00146878 File Offset: 0x00144A78 private static Action OutputWaitEtwEvents(Task task, Action continuation) { if (Task.s_asyncDebuggingEnabled) { Task.AddToActiveTasks(task); } TplEtwProvider etwLog = TplEtwProvider.Log; if (etwLog.IsEnabled()) { Task internalCurrent = Task.InternalCurrent; Task task2 = AsyncMethodBuilderCore.TryGetContinuationTask(continuation); etwLog.TaskWaitBegin((internalCurrent != null) ? internalCurrent.m_taskScheduler.Id : TaskScheduler.Default.Id, (internalCurrent != null) ? internalCurrent.Id : 0, task.Id, TplEtwProvider.TaskWaitBehavior.Asynchronous, (task2 != null) ? task2.Id : 0, Thread.GetDomainID()); } return(AsyncMethodBuilderCore.CreateContinuationWrapper(continuation, delegate { if (Task.s_asyncDebuggingEnabled) { Task.RemoveFromActiveTasks(task.Id); } Guid currentThreadActivityId = default(Guid); bool flag = etwLog.IsEnabled(); if (flag) { Task internalCurrent2 = Task.InternalCurrent; etwLog.TaskWaitEnd((internalCurrent2 != null) ? internalCurrent2.m_taskScheduler.Id : TaskScheduler.Default.Id, (internalCurrent2 != null) ? internalCurrent2.Id : 0, task.Id); if (etwLog.TasksSetActivityIds && (task.Options & (TaskCreationOptions)1024) != TaskCreationOptions.None) { EventSource.SetCurrentThreadActivityId(TplEtwProvider.CreateGuidForTaskID(task.Id), out currentThreadActivityId); } } continuation(); if (flag) { etwLog.TaskWaitContinuationComplete(task.Id); if (etwLog.TasksSetActivityIds && (task.Options & (TaskCreationOptions)1024) != TaskCreationOptions.None) { EventSource.SetCurrentThreadActivityId(currentThreadActivityId); } } }, null)); }