Я добавляю/обновляю объекты в параллельный словарь и периодически (каждую минуту) смываю словарь, поэтому мой код выглядит примерно так:
private static ConcurrentDictionary<string, Metric> _metrics = new ConcurrentDictionary<string, Metric>();
public static void IncrementCountMetricBy(string name, int count)
{
_metrics.AddOrUpdate(....
}
public static Metric[] Flush()
{
var flushedMetrics = _metrics;
_metrics = new ConcurrentDictionary<string, Metric>();
return flushedMetrics.Values.ToArray();
}
теперь я не уверен, может ли этот код потерять некоторые объекты/обновления