2014-02-17 46 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是否可以使用異步並在方法內等待? – Johnny

+0

@Johnny如果你想使用await,你需要將你的方法標記爲async – Alberto

+0

瞭解它,非常感謝; – Johnny

1

是的,你可以使用以.Net 4.5沿引入的新await關鍵字異步方法。

請參閱此link瞭解MSDN上的演練,瞭解如何使代碼等待下載完成。