Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

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
}
}