//private void m_ProcessFiles(Object state) private void m_ProcessFiles() { DateTime startTime; float velocidadTotal = 0; TimeSpan timeUsed; int timeSleep; //m_FileListThread.Change(Timeout.Infinite,Timeout.Infinite); while (m_FileListThread.IsAlive) { startTime = DateTime.Now; CKernel.ConnectionsList.CheckTimeOuts(); if (m_OSigInterval >= 30) { CKernel.OSig(""); m_OSigInterval = 0; } else { m_OSigInterval++; } CKernel.SourcesOld.CleanOldSources(); velocidadTotal = 0; lock (m_FileList.SyncRoot) { foreach (CElement Elemento in m_FileList) { if (Elemento.SourcesList != null) { Elemento.SourcesList.Process(); } if (Elemento.SourcesList != null) { velocidadTotal += Elemento.SourcesList.GetDownloadSpeed(); } } } m_GlobalDownSpeed = velocidadTotal; m_relayAdjust--; if (m_relayAdjust == 0) { m_relayAdjust = 5; AdjustSpeed(); } timeUsed = DateTime.Now - startTime; if (timeUsed.TotalMilliseconds > 1000) { timeSleep = 1; } else { timeSleep = 1000 - (int)timeUsed.TotalMilliseconds; } Thread.Sleep(timeSleep); // if (timeUsed.TotalMilliseconds>1000) // m_FileListThread.Change(1,Timeout.Infinite); // else // m_FileListThread.Change(1000-(int)timeUsed.TotalMilliseconds,Timeout.Infinite); } }