关于控件backgroundWorker后台操作的问题
使用.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这个函数,也就是说辅助线程是否报告进度无法实现,不明白哪里出错了。
------解决方案--------------------this.changeFormat((data)e.Argument , worker, e)是做什么的?
------解决方案--------------------ProgressChanged是个事件
------解决方案--------------------ReportProgress这个方法调了么?
------解决方案--------------------事件是发生的,而不是调用的,事件发生时会自动调用相应事件处理代码
可以用ReportProgress方法,引发 ProgressChanged事件