2014-02-03 2 views
1

Я использую _webClient.OpenReadAsync(myURI) для загрузки файлов, он отлично работает для загрузки файлов. Я хочу загрузить файлы в последовательности, начиная с 0-20. необходимо загрузить 1-й файл, затем второй и т. д. Я использую ниже, чтобы загрузить, но это не то, что я ожидаю.Как скачать mp3 файлы в последовательности?

foreach (string s in files) 
    _webClient.OpenReadAsync(new Uri(string.Format("{0}{1}", selectedReciter.DownloadURL, s))); 

Цикл for должен продолжаться только до 2-го, 3-го и так далее, если первый файл будет загружен, затем второй, затем третий и так далее.

ответ

-1

Вы можете использовать не-асинхронную версию того же метода, который блокирует выполнение до тех пор, пока поток OpenRead не будет завершен.

+0

Нет версии синхронизации. –

+0

Да, есть http://msdn.microsoft.com/en-us/library/781fwaz8%28v=vs.110%29.aspx – Jammer

+0

Только в .NET 4.5, но не в Silverlight для Windows Phone. Я просто проверил его в Visual Studio, Silverlight не имеет синхронных версий, что заставляет вас использовать асинхронные методы. –

1

Вы открываете URL для чтения асинхронно, это слово имеет тяжелое значение. Что произойдет, так это то, что функция не будет завершена, когда файл начнет чтение, а скорее вернется намного раньше.

Что вам нужно сделать, есть в await результат, что-то вроде этого:

async Task DownloadAll(List<string> addresses) 
{ 
    var wc = new WebClient(); 
    foreach(var address in addresses) 
     await wc.OpenReadTaskAsync(address); 
} 

Не забудьте добавить пакет NuGet: Microsoft.Bcl.Async первый.

0

Использовать передачу фонового файла для загрузки файлов. Передача фонового файла позволяет загружать файлы также в фоновом режиме, когда ваше приложение деактивируется или находится в фоновом режиме.

Here Подробнее о передаче файла фона. И Here - пример использования передачи фонового файла.

+0

Спасибо, это может помочь. Хотя я использовал WebClient, теперь мне нужно искать передачу файлов фона. – ARH

Смежные вопросы