public void TimerCallback(object state) { if (m_CounterDisplay != null) { DateTime lastTenSeconds = DateTime.Now - TimeSpan.FromSeconds(10.0); int sentPackets = 0, sentPacketsSize = 0; int recvPackets = 0, recvPacketsSize = 0; for (int i = m_Packets.Count - 1; i > 0; i--) { TimePacket tPacket = (TimePacket)m_Packets[i]; if (tPacket.Time < lastTenSeconds) { break; } Packet packet = tPacket.Packet; if (packet.Send) { sentPackets++; sentPacketsSize += packet.Data.Length; } else { recvPackets++; recvPacketsSize += packet.Data.Length; } } m_CounterDisplay.DisplayCounter(sentPackets / 10, sentPacketsSize / 10, recvPackets / 10, recvPacketsSize / 10); } }