/// <summary> /// Stops timing an event. Logs an exception if the event wasn't started. /// </summary> /// <param name="metric"></param> /// <returns></returns> public Timing StopEvent(Metric metric) { Timing timing; lock (metricsLock) { if (!inFlightTimings.TryGetValue(metric, out timing)) { LogError_Locked(metric, "Trying to stop event that has not been started"); return(new Timing()); } inFlightTimings.Remove(metric); timing.Stop(CurrentTime); if (IsEnabled) { List <IMetricsTiming> list; if (!Timings.TryGetValue(metric, out list)) { list = new List <IMetricsTiming>(); Timings[metric] = list; } list.Add(timing); } } return(timing); }
public Timing StopEvent(Metric metric) { lock (metricsLock) { if (!inFlightTimings.TryGetValue(metric, out Timing value)) { LogError_Locked(metric, "Trying to stop event that has not been started"); return(new Timing()); } inFlightTimings.Remove(metric); value.Stop(CurrentTime); if (!IsEnabled) { return(value); } if (!Timings.TryGetValue(metric, out List <IMetricsTiming> value2)) { value2 = new List <IMetricsTiming>(); Timings[metric] = value2; } value2.Add(value); return(value); } }