我有一种方法可用于从服务器下载文件。我的方法工作正常,但是我想返回在每个执行实例中执行的进程的计算百分比。我试图使用backgroundworker,并使用backgroundworker_changed方法作为我的进度条,如下所示。如何使用后台工作人员检查进程进度
bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
启动按钮单击工作。
private void btnStart_Click(object sender, EventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
worker_changed方法
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProcessPercentage;
}
我的问题是,我明白我必须从DoWork的()方法报告进度。请问我该如何实现?我想过做这样的事情。
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = Convert.ToInt32(e.UserState);
}
由于没有从DoWork返回进度,它仍然没有启动。任何帮助,将不胜感激。
您必须从bw_DoWork方法调用BackgroundWorker.ReportProgress方法 – AirL