1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
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
}
}
|