我有Windows窗体应用程序运行BackgroundWorker的类方法。如何将进度变更事件链接到进度条
我想添加窗口窗体进度条来显示进度。
在类方法我有一个foreach循环,所以我想每个回路与当前百分比发送表单事件
。
这是我做的:
public partial class Form1 : Form
{
Parsser inst;
public Form1()
{
InitializeComponent();
inst = new Parsser();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.WorkerSupportsCancellation = true;
}
private void button2_Click(object sender, EventArgs e)
{
if (this.textBox1 != null & this.textBox2 != null)
{
if (backgroundWorker1.IsBusy != true)
{
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync();
}
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
inst.init(this.textBox1.Text, this.textBox2.Text);
inst.ParseTheFile();
System.Windows.Forms.MessageBox.Show("Parsing finish successfully");
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar1.Value = e.ProgressPercentage;
}
}
}
`
,并在课堂上,我做这个 -
public Parsser()
{
bgReports = new BackgroundWorker();
bgReports.WorkerReportsProgress = true;
}
public void ParseTheFile()
{
Lines = File.ReadAllLines(FilePath);
this.size = Lines.Length;
foreach (string line in Lines)
{
bgReports.ReportProgress(allreadtchecked/size);
从某种原因,它不工作的任何想法
?
我改变了代码,我送backgroundWorker1到解析器的约束。并在解析器类中调用bgReports.ReportProgress(allreadtchecked/size);并尝试通过private void backgroundWorker1_ProgressChanged捕获此事件,但仍然无法访问私人空间backgroundWorker1_ProgressChanged – MoShe
此答案仍使用第二个BackgroundWorker,bgReports。你真的不应该有两个班级共享一名工作人员,也不应该有另一名工作人员。 –
那么应该如何回答? – MoShe