private void TrafficMonitorThread()
{
try
{
var sw = new Stopwatch();
sw.Start();
while (!_closed)
{
Thread.Sleep(((int)Math.Max(2, 1000 - sw.ElapsedMilliseconds)) / 2);
if (sw.ElapsedMilliseconds < 1000) continue;
var receivedByteCount = _amoebaManager.ReceivedByteCount;
var sentByteCount = _amoebaManager.SentByteCount;
lock (_sentInfomation.ThisLock)
{
_sentInfomation.AverageTrafficList[_sentInfomation.Round++]
= ((decimal)(sentByteCount - _sentInfomation.PreviousTraffic)) * 1000 / sw.ElapsedMilliseconds;
_sentInfomation.PreviousTraffic = sentByteCount;
if (_sentInfomation.Round >= _sentInfomation.AverageTrafficList.Length)
{
_sentInfomation.Round = 0;
}
}
lock (_receivedInfomation.ThisLock)
{
_receivedInfomation.AverageTrafficList[_receivedInfomation.Round++]
= ((decimal)(receivedByteCount - _receivedInfomation.PreviousTraffic)) * 1000 / sw.ElapsedMilliseconds;
_receivedInfomation.PreviousTraffic = receivedByteCount;
if (_receivedInfomation.Round >= _receivedInfomation.AverageTrafficList.Length)
{
_receivedInfomation.Round = 0;
}
}
sw.Restart();
}
}
catch (Exception e)
{
Log.Error(e);
}
}