| File: TraceSourceScope.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Logging.TraceSource\src\Microsoft.Extensions.Logging.TraceSource.csproj (Microsoft.Extensions.Logging.TraceSource) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Diagnostics; namespace Microsoft.Extensions.Logging.TraceSource { /// <summary> /// Provides an IDisposable that represents a logical operation scope based on System.Diagnostics LogicalOperationStack /// </summary> internal sealed class TraceSourceScope : IDisposable { // To detect redundant calls private bool _isDisposed; /// <summary> /// Pushes state onto the LogicalOperationStack by calling /// <see cref="CorrelationManager.StartLogicalOperation(object)"/> /// </summary> /// <param name="state">The state.</param> public TraceSourceScope(object state) { Trace.CorrelationManager.StartLogicalOperation(state); } /// <summary> /// Pops a state off the LogicalOperationStack by calling /// <see cref="CorrelationManager.StopLogicalOperation()"/> /// </summary> public void Dispose() { if (!_isDisposed) { Trace.CorrelationManager.StopLogicalOperation(); _isDisposed = true; } } } }