关于控件backgroundWorker后台操作的问题

retnuh 2007-07-16 11:02:26
使用.net 2.0新加的backgroundWorker控件进行多线程的操作,其中backgroundWorker下的函数ProgressChanged是负责报告当前程序进度的,这部分代码如下
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
this.changeFormat((data)e.Argument , worker, e);
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
toolStripStatusLabel1.Text = "正在格式转换...." + e.ProgressPercentage + "%";
toolStripProgressBar1.Value = e.ProgressPercentage;
if (e.ProgressPercentage == 100)
{
MessageBox.Show("格式转换成功!");
}
this.Refresh();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Cursor = Cursors.Default;
}
其中 backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
现在就是不知道哪里的原因,无法调用backgroundWorker1_ProgressChanged这个函数,也就是说辅助线程是否报告进度无法实现,不明白哪里出错了。
...全文
419 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovefootball 2007-07-16
  • 打赏
  • 举报
回复
http://www.cnblogs.com/idior/archive/2005/08/18/217796.html
lovefootball 2007-07-16
  • 打赏
  • 举报
回复
看看这个简单的例子
lovefootball 2007-07-16
  • 打赏
  • 举报
回复
你需要在backgroundWorker1_DoWork中调用worker.ReportProgress这个方法
才会触发ProgressChanged事件

viena 2007-07-16
  • 打赏
  • 举报
回复
事件是发生的,而不是调用的,事件发生时会自动调用相应事件处理代码
可以用ReportProgress方法,引发 ProgressChanged事件
lovefootball 2007-07-16
  • 打赏
  • 举报
回复
ReportProgress这个方法调了么?
owennol 2007-07-16
  • 打赏
  • 举报
回复
this.changeFormat((data)e.Argument , worker, e)是做什么的?
viena 2007-07-16
  • 打赏
  • 举报
回复
ProgressChanged是个事件
retnuh 2007-07-16
  • 打赏
  • 举报
回复
回楼上,例子我看过了,但我还是不明白错在哪里,例子中也没有在backgroundWorker1_DoWork中调用worker.ReportProgress这个方法啊,我尝试在backgroundWorker1_DoWork中调用worker.ReportProgress这个方法,仍然没反应,另外,this.changeFormat((data)e.Argument , worker, e);
是我要运行的消耗时间的一个函数,里面包括读取一系列txt文件内容,然后将读入的内容转换格式,有好几个循环语句,之所以无法引发ProgressChanged事件跟这个消耗时间的函数有没有关系呢?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧