首页 新闻 搜索 专区 学院

运用BackgroundWorker过程中ProgressChanged()中问题,e.ProgressPercentage第二次用初始值从101开始

0
悬赏园豆:5 [已关闭问题] 关闭于 2016-04-24 18:25

想多次运用同一BackgroundWorker对象进行线程操作

private void btnSingleCopy_Click(object sender, EventArgs e)
{
Done = 0;
tableName[0] = comboBox3.Text;
tableName[1] = comboBox4.Text;

Currentbgw.WorkerReportsProgress = true;//报告完成进度
Currentbgw.WorkerSupportsCancellation = true;//允许用户终止后台线程
Currentbgw.DoWork += new DoWorkEventHandler(SingleDoWork);
Currentbgw.ProgressChanged += new ProgressChangedEventHandler(SingleUpdateProgress);
Currentbgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(SingleCompletedWork);

if (!Currentbgw.IsBusy)//判断backgroundWorker1是否正在运行异步操作
{
Currentbgw.RunWorkerAsync(tableName);//开始执行后台操作
}
}

void SingleCompletedWork(object sender, RunWorkerCompletedEventArgs e)
{

MessageBox.Show("处理完成!");
Done = 0;
progressBar1.Value = 0;
Currentbgw.Dispose();
}

当第二次btnSingleCopy_Click事件后,e.ProgressPercentage传递给progressBar1.Value 的值从101开始,而不是从0开始的,导致progressBar1.Value 越界,怎么解决这个问题啊?

void SingleUpdateProgress(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;//将完成进度数据传给进度条
label11.Text = Convert.ToInt32(progressBar1.Value).ToString() + "%";

}

一碗周的主页 一碗周 | 菜鸟二级 | 园豆:203
提问于:2016-04-15 17:36
< >
分享
所有回答(1)
0

解决了吗?

码农改变世界lyf | 园豆:46 (初学一级) | 2017-06-05 20:47

过去时间比较长了,但是已解决

支持(0) 反对(0) 一碗周 | 园豆:203 (菜鸟二级) | 2017-06-06 14:28

@一碗周: 请问你有用过线程同步吗?

支持(0) 反对(0) 码农改变世界lyf | 园豆:46 (初学一级) | 2017-06-06 15:44

@码农改变世界lyf: 直接用的backgroundworker做的,不过过去时间挺长了,有点忘了

支持(0) 反对(0) 一碗周 | 园豆:203 (菜鸟二级) | 2017-06-06 16:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册