示例#1
0
 void TraceAndInvoke()
 {
     //
     if (this.flowLegacyActivityId)
     {
         Guid currentActivityId = EtwDiagnosticTrace.ActivityId;
         try
         {
             EtwDiagnosticTrace.ActivityId = this.activityId;
             this.callback(this.state);
         }
         finally
         {
             EtwDiagnosticTrace.ActivityId = currentActivityId;
         }
     }
     else
     {
         Guid previous          = Guid.Empty;
         bool restoreActivityId = false;
         try
         {
             if (this.eventTraceActivity != null)
             {
                 previous          = Trace.CorrelationManager.ActivityId;
                 restoreActivityId = true;
                 Trace.CorrelationManager.ActivityId = this.eventTraceActivity.ActivityId;
                 if (TraceCore.ActionItemCallbackInvokedIsEnabled(Fx.Trace))
                 {
                     TraceCore.ActionItemCallbackInvoked(Fx.Trace, this.eventTraceActivity);
                 }
             }
             this.callback(this.state);
         }
         finally
         {
             if (restoreActivityId)
             {
                 Trace.CorrelationManager.ActivityId = previous;
             }
         }
     }
 }
示例#2
0
            private async Task TraceAndInvokeAsync()
            {
                if (_flowLegacyActivityId)
                {
                    Guid currentActivityId = EtwDiagnosticTrace.ActivityId;
                    try
                    {
                        EtwDiagnosticTrace.ActivityId = _activityId;
                        await _asyncCallback(_state);
                    }
                    finally
                    {
                        EtwDiagnosticTrace.ActivityId = currentActivityId;
                    }
                }
                else
                {
                    Guid previous          = Guid.Empty;
                    bool restoreActivityId = false;
                    try
                    {
                        if (_eventTraceActivity != null)
                        {
                            previous          = Trace.CorrelationManager.ActivityId;
                            restoreActivityId = true;
                            Trace.CorrelationManager.ActivityId = _eventTraceActivity.ActivityId;
                            if (TraceCore.ActionItemCallbackInvokedIsEnabled(Fx.Trace))
                            {
                                TraceCore.ActionItemCallbackInvoked(Fx.Trace, _eventTraceActivity);
                            }
                        }

                        await _asyncCallback(_state);
                    }
                    finally
                    {
                        if (restoreActivityId)
                        {
                            Trace.CorrelationManager.ActivityId = previous;
                        }
                    }
                }
            }
示例#3
0
 private void TraceAndInvoke()
 {
     if (!this.flowLegacyActivityId)
     {
         Guid empty = Guid.Empty;
         bool flag  = false;
         try
         {
             if (this.eventTraceActivity != null)
             {
                 empty = Trace.CorrelationManager.ActivityId;
                 flag  = true;
                 Trace.CorrelationManager.ActivityId = this.eventTraceActivity.ActivityId;
                 if (TraceCore.ActionItemCallbackInvokedIsEnabled(Fx.Trace))
                 {
                     TraceCore.ActionItemCallbackInvoked(Fx.Trace, this.eventTraceActivity);
                 }
             }
             this.callback(this.state);
         }
         finally
         {
             if (flag)
             {
                 Trace.CorrelationManager.ActivityId = empty;
             }
         }
     }
     else
     {
         Guid activityId = DiagnosticTraceBase.ActivityId;
         try
         {
             DiagnosticTraceBase.ActivityId = this.activityId;
             this.callback(this.state);
         }
         finally
         {
             DiagnosticTraceBase.ActivityId = activityId;
         }
     }
 }