Есть ли способ установить максимальное количество одновременных загрузок с BackgroundDownloader?
Примерно этим я и занимаюсь.
var downloader = new BackgroundDownloader();
foreach( var uri in uriList )
{
var download = downloader.CreateDownload( uri, storageFile );
download.StartAsync().AsTask( cancellationTokenSource.Token, progress );
}
Я хотел бы иметь возможность установить максимальный параллелизм загрузки, скажем, 4. Это встроено, или мне нужно управлять этим самостоятельно?
Если мне нужно управлять этим самостоятельно, каков рекомендуемый способ? Я думал просто сделать Parallel.ForEach и установить там максимальную сумму, но я не знаю, хорошее ли это решение.
Taskв 3 корзины:Queue,Downloading,Done. ИспользуяTask.WhenAnyв спискеDownloading, удалите эту задачу и поместите ее в список «Готово», затемdequeueи начните новую, добавив ее вDownloading. - person Nate Diamond   schedule 29.03.2014Parallel.ForEachработает, но тогда обратный вызов находится в другом потоке, и у меня возникают проблемы с запуском вещей вCoreDispatcher. Я бы предпочел делать все, используя async/await, если смогу; тем более, что операции загрузки уже асинхронны. - person Josh Close   schedule 29.03.2014