void ThreadEntry() { var sw = Stopwatch.StartNew(); var previousTs32 = _localPeer.LocalPeer.Time32; const uint period32 = (uint)TimeSpan.TicksPerMillisecond * 10; int counter = 0; while (!_disposing) { try { _actionsQueue.ExecuteQueued(); var timeNow32 = _localPeer.LocalPeer.Time32; while (MiscProcedures.TimeStamp1IsLess(previousTs32, timeNow32) && !_disposing) { if (_debug) { Debugger.Break(); } previousTs32 = unchecked (previousTs32 + period32); foreach (var stream in _streams.Values) { stream.SendPacketsIfNeeded_10ms(); } counter++; if (counter % 10 == 0) { foreach (var stream in _streams.Values) { stream.SendPayloadPacketsIfNeeded_100ms(); } } if (counter % 100 == 0) { foreach (var stream in _streams.Values) { stream.SendPayloadPacketsIfNeeded_1s(); } } } } catch (Exception exc) { _localPeer.HandleException(exc); } Thread.Sleep(10); } }