253
|
1 using System;
|
|
2 using System.Diagnostics;
|
|
3
|
|
4 namespace Implab.Diagnostics {
|
|
5 public class ActivityScope : IDisposable {
|
|
6 readonly TraceSource m_source;
|
|
7
|
|
8 readonly Guid m_prevId;
|
|
9
|
|
10 readonly string m_activity;
|
|
11
|
|
12 readonly int m_code;
|
|
13
|
|
14 internal ActivityScope(TraceSource source, Guid prevId, int code, string activity) {
|
|
15 m_source = source;
|
|
16 m_prevId = prevId;
|
|
17 m_code = code;
|
|
18 m_activity = activity;
|
|
19 }
|
|
20
|
|
21
|
|
22 public void Dispose() {
|
|
23 if (Trace.CorrelationManager.ActivityId != m_prevId)
|
|
24 m_source.TraceTransfer(m_code, "Transfer", m_prevId);
|
|
25 m_source.TraceEvent(TraceEventType.Stop, 0, m_activity);
|
|
26 Trace.CorrelationManager.ActivityId = m_prevId;
|
|
27 }
|
|
28 }
|
|
29 } |