2011-06-29 83 views
1

背景信息:我有一個程序在url列表中運行;每個URL將一次下載一個,但在後臺線程中運行以保持UI響應。爲了報告進度,我使用了DownloadFileAsync方法。 我的問題是,我想能夠有一個取消按鈕,將立即結束下載。我的代碼放在一起的在BackgroundWorker中取消Webclient.DownloadFile

AutoResetEvent autoMobile = new AutoResetEvent(false); 
WebClient dclient = new WebClient(); 

//setup event handlers... for progress, etc... 

dclient.DownloadFileAsync(new Uri(egg.DownloadURL), egg.LocalFilePath); 
autoMobile.WaitOne(); 

//end of DoWork 

線的東西,我不能想辦法或地方插入一個循環來檢查取消未決。我只是略懂線程,並沒有完全理解AutoResetEvent。

回答

4

如果您使用System.Net.WebClient,它包含一個CancelAsync()方法,應該爲您做。您所需要的只是對要取消的特定WebClient的引用,以便按鈕的單擊事件可以調用該方法。

請注意,我自己沒有測試過這個 - 但那是我第一次嘗試。

+0

它確實釋放了工人;這個想法似乎已經下滑了。謝謝 – PlagueEditor