2016-03-24 9 views
1

私は自分のアプリにダウンローダマネージャーを使っていますが、停止ボタンの動作方法を知ることができませんでした。私は解決策を探していましたが、何か助けてくれるものが見つかりませんでした コードは[C#の]ダウンローダに停止ボタンを追加する方法

private void btnDownload_Click(object sender, EventArgs e) 
{ 
    btnDownload.Enabled = false; 
    btnStop.Enabled = true; 
    WebClient webClient = new WebClient(); 
    webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
    webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
webClient.DownloadFileAsync(new Uri(url.Text), path.Text ;) 
} 

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
    { 
    progressBar.Value = e.ProgressPercentage; 
} 

private void Completed(object sender, AsyncCompletedEventArgs e) 
{ 
    MessageBox.Show("Download completed!"); 
} 

private void btnstop (object sender , e) 
{ 
    btnDownload.Enabled = true; 
    btnstop.Enabled = false; 
    progressbar.value = 0; 
} 
+1

多分 'webclient.CancelAsync()'? - DownloadStringAsync操作をキャンセルするためにCancelAsyncを呼び出すと、DownloadStringCompletedイベントのイベントハンドラを指定した場合、イベントハンドラは操作が終了したという通知を受け取ります。[Source](https://msdn.microsoft.com/ de-de/library/system.net.webclient.cancelasync(v = vs.110).aspx) –

答えて

3

Nitro.deが言うように、あなたがWebClient.CancelAsyncを使用する必要があり です。

保留中の非同期操作を取り消します。

e.Cancelledは、Webクライアントの非同期要求をキャンセルする

private void Completed(object sender, AsyncCompletedEventArgs e) 
{ 
    if(e.Cancelled) 
     MessageBox.Show("Download cancelled!"); 
    else 
     MessageBox.Show("Download completed!"); 
} 
0

真であるかどうかのチェックを覚えて、あなたが見つかりました。hereとしてWebClient.CancelAsyncメソッドを呼び出すことができます。これでもダウンロード完了ハンドラが呼び出されるので、メッセージボックスを表示する前にCompleted関数でe.Canceledがの場合、が真であるかどうかを確認する必要があります。

+0

あなたは私にそれを書くことができますか?私はそれを行う方法を知らない: – louay

関連する問題