public void QueueDownloader(HttpDownloader downloader) { lock (SyncRoot) { PendingDownloaders.Enqueue(downloader); Update(); } }
void Update() { lock (SyncRoot) { while (PendingDownloaders.Count > 0 && active_downloaders.Count < MaxConcurrentDownloaders) { var downloader = PendingDownloaders.Peek(); downloader.Started += OnDownloaderStarted; downloader.Finished += OnDownloaderFinished; downloader.Progress += OnDownloaderProgress; downloader.BufferUpdated += OnDownloaderBufferUpdated; active_downloaders.Add(downloader); PendingDownloaders.Dequeue(); downloader.Start(); } } }