protected virtual void DequeueRequest(DownloadConvertRequest currentRequest) { if (this.CurrentlyProcessingRequestsCount >= this.MaxParallelRequests) { return; } this.CurrentlyProcessingRequests.Add(currentRequest); Task.Factory.StartNew(() => { DownloadResult downloadResult = this.Downloader.Download(currentRequest.MediaFile, currentRequest.DownloadPath); this.OnDownloadResult(downloadResult); ConvertResult convertResult; if (downloadResult.IsDownloaded) { convertResult = this.Converter.Convert(currentRequest.MediaFile, downloadResult.DownloadPath, currentRequest.ConvertPath, currentRequest.ConvertMetadata); } else { convertResult = new ConvertResult(currentRequest.MediaFile) { IsConverted = false }; } this.OnConvertResult(convertResult); CompositeResult <DownloadResult, ConvertResult> finalResult = new CompositeResult <DownloadResult, ConvertResult>(currentRequest.MediaFile, downloadResult, convertResult); lock (SyncRoot) { this.CurrentlyProcessingRequests.Remove(currentRequest); } this.OnDownloadConvertResult(finalResult); }); }
public ManagerConvertCompleteResultEventArgs(ConvertResult convertResult) { this.ConvertResult = convertResult; }