public static void Enter(string name) { if (!IsEnabled) { return; } long parentId = ActivityIds.Count > 0 ? ActivityIds.Last.Value : -1L; long id = Interlocked.Increment(ref EventId); ActivityIds.AddLast(id); var profileEvent = new RawProfileEvent(Thread.CurrentThread.ManagedThreadId, parentId, id, Stopwatch.GetTimestamp(), ProfileEventType.StartMethod, name); WriterThread.Enqueue(profileEvent); }
public static void Exit() { if (!IsEnabled) { return; } long id = -1L; long parentId = -1L; if (ActivityIds.Count > 0) { id = ActivityIds.Last.Value; ActivityIds.RemoveLast(); if (ActivityIds.Count > 0) { parentId = ActivityIds.Last.Value; } } var profileEvent = new RawProfileEvent(Thread.CurrentThread.ManagedThreadId, parentId, id, Stopwatch.GetTimestamp(), ProfileEventType.EndMethod, string.Empty); WriterThread.Enqueue(profileEvent); }