1

バックグラウンド ワーカーの進行状況を DoWork イベント以外で変更する必要がありますか?

私のコード

private void progress_changed(string fileName, DownloadProgressChangedEventArgs e)
{
    progress = e.ProgressPercentage;
    Filename = fileName;
    // change the progress here
}

private void worker_DoWork(string fileName)
{
    WebClient client = new WebClient();
    client.DownloadProgressChanged += (obj, e) => progress_changed(fileName, e);
    client.DownloadFileCompleted += new AsyncCompletedEventHandler(progress_complete);
    client.DownloadFileAsync(new Uri(Link), Savepath);
}

private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    mainForm.dlist.Items[mainForm.dlist.Items.IndexOfKey(Filename)].SubItems[2].Text = progress.ToString() + "%";
    mainForm.dlist.Items[mainForm.dlist.Items.IndexOfKey(Filename)].SubItems[3].Text = "Downloading";
}
4

1 に答える 1

0

BackgroundWorker を他の関数に渡します。そこから、 に電話できますReportProgress。または、構造によっては、BackgroundWorker をクラス フィールドにして、その方法でアクセスすることもできます。

于 2012-04-19T15:14:37.843 に答える