2011-06-29 4 views
1

背景情報:私は、URLのリストを実行しているプログラムを持っています。各URLは一度に1つずつダウンロードされますが、バックグラウンドスレッドで実行されて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

関連する問題