2011-06-26 68 views
0

如何終止這種方法/下載功能?如何終止C#中的異步函數

private void Download_Click(object sender, EventArgs e) 
{ 
    WebClient webClient = new WebClient(); 
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
    webClient.DownloadFileAsync(new Uri("http://google.com/test.zip"), @"test.zip"); 

} 

基本上取消下載功能

+0

閱讀該方法的MSDN庫文章的備註部分。 –

回答

3

這樣做:webClient.CancelAsync();

+0

你會如何從外部方法調用此方法? –

+0

@James:您需要在某處保存對WebClient實例的引用,而不是讓它超出範圍。 –

1

調用CancelAsync()方法。

2

使用CancelAsync,從documentation

備註

如果操作掛起,這種方法調用中止對 底層的WebRequest。當您調用CancelAsync時,應用程序 仍然收到與操作關聯的完成事件。例如,對於 示例,當您調用CancelAsync以取消DownloadStringAsync 操作時,如果您爲 DownloadStringCompleted事件指定了事件處理程序,則您的事件處理程序會收到 通知該操作已結束。要了解 操作是否成功完成,請在傳遞給事件處理程序的事件數據對象 中檢查DownloadDataCompletedEventArgs的 基類上的Canceled屬性。如果 進度中沒有異步操作,則此方法不執行任何操作。