e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Diagnostics;
|
|
|
|
/// <summary>
|
|
/// Summary description for Class1
|
|
/// </summary>
|
|
namespace System.Workflow.Runtime
|
|
{
|
|
internal class WorkflowTraceTransfer : IDisposable
|
|
{
|
|
Guid oldGuid;
|
|
bool transferBackAtClose;
|
|
|
|
public WorkflowTraceTransfer(Guid instanceId)
|
|
{
|
|
this.oldGuid = Trace.CorrelationManager.ActivityId;
|
|
|
|
if (!this.oldGuid.Equals(instanceId)) //Avoid redundant transfers.
|
|
{
|
|
WorkflowTrace.Runtime.TraceTransfer(
|
|
0,
|
|
null,
|
|
instanceId
|
|
);
|
|
Trace.CorrelationManager.ActivityId = instanceId;
|
|
WorkflowTrace.Runtime.TraceEvent(TraceEventType.Start, 0, "Workflow Trace");
|
|
this.transferBackAtClose = true;
|
|
}
|
|
}
|
|
|
|
#region IDisposable Members
|
|
|
|
public void Dispose()
|
|
{
|
|
if (this.transferBackAtClose)
|
|
{
|
|
WorkflowTrace.Runtime.TraceTransfer(
|
|
0,
|
|
null,
|
|
oldGuid
|
|
);
|
|
WorkflowTrace.Runtime.TraceEvent(TraceEventType.Stop, 0, "Workflow Trace");
|
|
Trace.CorrelationManager.ActivityId = oldGuid;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|