internal void Log(LatencyDetectionContext context) { foreach (KeyValuePair <LoggingType, ILatencyDetectionLogger> keyValuePair in this.loggers) { ILatencyDetectionLogger value = keyValuePair.Value; LoggingType key = keyValuePair.Key; LatencyDetectionContext latencyDetectionContext; LatencyReportingThreshold threshold; ICollection <LatencyDetectionContext> backlog; bool flag = this.checker.ShouldCreateReport(context, key, out latencyDetectionContext, out threshold, out backlog); if (flag) { LatencyDetectionException exception = latencyDetectionContext.CreateLatencyDetectionException(); PerformanceReporter.LogData state = new PerformanceReporter.LogData(value, threshold, latencyDetectionContext, backlog, exception); ThreadPool.QueueUserWorkItem(PerformanceReporter.LogReportDelegate, state); } } }
private static void ReportingWorker(object state) { PerformanceReporter.LogData logData = (PerformanceReporter.LogData)state; logData.Logger.Log(logData.Threshold, logData.Trigger, logData.Backlog, logData.Exception); }