2014-02-17 3 views
3

Можно ли дождаться завершения загрузки, а затем выполнить следующую строку кода?C# downloadasync ждать загрузки до завершения

WebClient wb = new WebClient(); 
wb.DownloadFileAsync(new Uri("url"), @"c:\tmp\file.exe"); 
wb.DownloadProgressChanged += wb_DownloadProgressChanged; 
wb.DownloadFileCompleted += wb_DownloadFileCompleted; 
//Code to run after download finished... 

Я знаю, что я могу просто использовать wb.DownloadFile но обыкновение давать обратную связь загрузки в процентах.

ответ

3

Если вы используете .net 4.5 вы можете воспользоваться новыми async/await ключевых слов и метод DownloadFileTaskAsync

async void DownloadSomeFile() 
{ 
    WebClient wb = new WebClient(); 
    wb.DownloadProgressChanged += wb_DownloadProgressChanged; 
    wb.DownloadFileCompleted += wb_DownloadFileCompleted; 

    await wb.DownloadFileTaskAsync(new Uri("url"), @"c:\tmp\file.exe"); 

    //Do the other work here 
} 
+0

@Aberto можно использовать async и ждать внутри метода? – Johnny

+0

@Johnny Если вы хотите использовать ожидание, вам нужно отметить свой метод, так как async – Alberto

+0

получил его, спасибо большое; – Johnny

1

Да, вы можете использовать новое await ключевое слово, которое было введено в .Net 4.5 вместе с методы Async.

См. Это link для прохода по MSDN, как заставить код ждать завершения загрузки.

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