public void RequestDownload( string url, string downloadPath, Action success, Action <Exception> error) { var request = new MvxFastFileDownloadRequest(url, downloadPath); request.DownloadComplete += (sender, args) => { OnRequestFinished(request); success(); }; request.DownloadFailed += (sender, args) => { OnRequestFinished(request); error(args.Value); }; RunAsyncWithLock( () => { _queuedRequests.Enqueue(request); if (_currentRequests.Count < _maxConcurrentDownloads) { StartNextQueuedItem(); } }); }
private void OnRequestFinished(MvxFastFileDownloadRequest request) { RunAsyncWithLock( () => { _currentRequests.Remove(request); if (_queuedRequests.Any()) { StartNextQueuedItem(); } }); }