使用.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这个函数,也就是说辅助线程是否报告进度无法实现,不明白哪里出错了。
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这个函数,也就是说辅助线程是否报告进度无法实现,不明白哪里出错了。
可以用ReportProgress方法,引发 ProgressChanged事件
才会触发ProgressChanged事件
是我要运行的消耗时间的一个函数,里面包括读取一系列txt文件内容,然后将读入的内容转换格式,有好几个循环语句,之所以无法引发ProgressChanged事件跟这个消耗时间的函数有没有关系呢?