public void MaxResponseTimeTest()
        {
            StatData data = new StatData();
            for (var i = 0; i < 10000; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    data.MaxResponseTime = i;
                });
            }

            Thread.Sleep(5000);

            Assert.AreEqual(10000, data.MaxResponseTime);
        }
        public void FrequencyTest()
        {
            StatData data = new StatData();

            for(var i = 0; i < 10000; i++)
            {
                Task.Factory.StartNew(() =>
                {
                    data.AddResponseFrequency();
                });
            }

            Thread.Sleep(5000);

            Assert.AreEqual(10000, data.ResponseFrequency);
        }
        /// <summary>
        /// 响应统计
        /// </summary>
        /// <param name="requestTime"></param>
        /// <param name="data"></param>
        /// <param name="responseTime"></param>
        /// <param name="hasError"></param>
        private static void ActualResponseStat(DateTime requestTime, MonitorData data, Int64 responseTime,bool hasError)
        {
            string requestTimeMinStr = requestTime.ToString("yyyyMMddHHmm");

            ConcurrentDictionary<MonitorData, StatData> monitorData;
            if (dataContainer.TryGetValue(requestTimeMinStr, out monitorData))
            {
                StatData statData;
                if (monitorData.TryGetValue(data, out statData))
                {
                    statData.AddResponseFrequency();
                    statData.UpdateResponseTime(responseTime);
                    if (hasError)
                    {
                        statData.AddErrorResponseFrequency();
                    }
                }
                else
                {
                    statData = new StatData();
                    statData.AddResponseFrequency();
                    statData.UpdateResponseTime(responseTime);
                    if (hasError)
                    {
                        statData.AddErrorResponseFrequency();
                    }

                    monitorData.TryAdd(data, statData);
                }
            }
            else
            {
                monitorData = new ConcurrentDictionary<MonitorData, StatData>();

                var statData = new StatData();
                statData.AddResponseFrequency();
                statData.UpdateResponseTime(responseTime);
                if (hasError)
                {
                    statData.AddErrorResponseFrequency();
                }
                monitorData.TryAdd(data, statData);
                dataContainer.TryAdd(requestTimeMinStr, monitorData);
            }
        }
 /// <summary>
 /// 请求统计
 /// </summary>
 /// <param name="requestTime"></param>
 /// <param name="data"></param>
 private static void ActualRequestStat(DateTime requestTime,MonitorData data)
 {
     string requestTimeMinStr = requestTime.ToString("yyyyMMddHHmm");
     ConcurrentDictionary<MonitorData, StatData> monitorData;
     if (dataContainer.TryGetValue(requestTimeMinStr, out monitorData))
     {
         StatData statData;
         if (monitorData.TryGetValue(data, out statData))
         {
             statData.AddRequestFrequency();
         }
         else
         {
             statData = new StatData();
             statData.AddRequestFrequency();
             monitorData.TryAdd(data, statData);
         }
     }
     else
     {
         monitorData = new ConcurrentDictionary<MonitorData, StatData>();
         var statData = new StatData();
         statData.AddRequestFrequency();
         monitorData.TryAdd(data, statData);
         dataContainer.TryAdd(requestTimeMinStr, monitorData);
     }
 }