private void Metric_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (_disposed) { (sender as iMetric).PropertyChanged -= Metric_PropertyChanged; return; } if (e.PropertyName != "nValue") { return; } iMetric _metric = (iMetric)sender; if (_data == null || !_data.ContainsKey(_metric)) { _metric.PropertyChanged -= Metric_PropertyChanged; return; } DateTime _now = DateTime.Now; try { ObservableCollection <MetricRecord> _mData = _data[_metric]; foreach (MetricRecord _record in _mData.Where(r => (_now - r.Recorded).TotalSeconds > Duration).ToArray()) { _mData.Remove(_record); } _mData.Add(new MetricRecord(_metric.nValue, _now)); } catch (Exception exception) { _metric.PropertyChanged -= Metric_PropertyChanged; BacktraceLogger.Log(new Backtrace.Model.BacktraceReport(exception)); } }
private void BindMetrics(iMetric[] metrics) { MetricItems = metrics; Metrics = new ObservableCollection<iMetric>(); }