2014-03-28 23 views
0

有沒有一種方法可以設置從BackgroundDownloader併發下載的最大數量?BackgroundDownloader Max Parallelism

這大致是我在做什麼。

var downloader = new BackgroundDownloader(); 
foreach(var uri in uriList) 
{ 
    var download = downloader.CreateDownload(uri, storageFile); 
    download.StartAsync().AsTask(cancellationTokenSource.Token, progress); 
} 

我希望能夠設置的最大下載並行4.說這是內置的,或者我需要這個管理自己?

如果我需要自己管理這個,推薦的方法是什麼?我曾考慮過只是在做一個Parallel.ForEach並設置最高金額,但我不知道這是否是一個好的解決方案。

+0

我不知道你是否可以做所有的'任務'到3個桶:'隊列','下載','完成'。使用'Downloading'列表中的'Task.WhenAny',移除該任務並將其放入'Done'列表中,然後'出列'並啓動一個,並將其添加到'Downloading'中。 –

+0

你能整理一個工作示例並將其作爲答案發布嗎?我在這裏嘗試了幾種不同的方法,沒有什麼工作是正確的。做爲'Parallel.ForEach'工作,但回調在另一個線程上,而且我在CoreDispatcher上運行時遇到問題。如果可以的話,我寧願儘可能使用異步/等待;特別是因爲下載操作已經是異步的。 –

回答

0

這就是我最終做的。這不完整,但它是它的要點。

​​