public static IEnumerable <CounterData> GetResults()
        {
            var counterGroups = _counterLookupInstance.Values.SelectMany(lookup => lookup.Values).GroupBy(meas => meas.Name);

            foreach (var counterGroup in counterGroups)
            {
                CounterData counter = new CounterData(counterGroup.Key);
                counter.Value = counterGroup.Sum(meas => meas.Value);
                counter.First = counterGroup.Min(meas => meas.First);
                counter.Last  = counterGroup.Max(meas => meas.Last);
                yield return(counter);
            }
        }
        /// <summary>
        /// Increment the counter for the given name.
        /// </summary>
        public static void IncrementBy(string name, long value)
        {
            Dictionary <string, CounterData> lookup = _counterLookupInstance.Value;

            CounterData counter;

            if (!lookup.TryGetValue(name, out counter))
            {
                counter = new CounterData(name);
                lookup.Add(name, counter);
            }

            DateTime now = DateTime.Now;

            if (counter.First == DateTime.MinValue)
            {
                counter.First = now;
            }

            counter.Last  = now;
            counter.Value = counter.Value + value;
        }