/// <summary> /// Initializes a new instance of the <see cref="Metric"/> class. /// </summary> /// <param name="manager">Aggregator manager handling this instance.</param> /// <param name="name">Metric name.</param> /// <param name="dimensions">Metric dimensions.</param> internal Metric( MetricManager manager, string name, IDictionary <string, string> dimensions = null) { this.manager = manager ?? throw new ArgumentNullException(nameof(manager)); this.Name = name; this.Dimensions = dimensions; this.aggregatorId = Metric.GetAggregatorId(name, dimensions); this.hashCode = this.aggregatorId.GetHashCode(); }
/// <summary> /// Initializes the telemetry module. /// </summary> /// <param name="configuration">Telemetry Configuration used for creating TelemetryClient for sending exception statistics to Application Insights.</param> public void Initialize(TelemetryConfiguration configuration) { // Core SDK creates 1 instance of a module but calls Initialize multiple times if (!this.isInitialized) { lock (this.lockObject) { if (!this.isInitialized) { this.telemetryClient = new TelemetryClient(configuration); this.telemetryClient.Context.GetInternalContext().SdkVersion = SdkVersionUtils.GetSdkVersion("exstat:"); this.MetricManager = new MetricManager(this.telemetryClient, configuration); this.registerAction(this.CalculateStatistics); this.isInitialized = true; } } } }