在我的.NET C#项目中,我使用了“BackgroundWorker”来调用不同类中的方法。以下是我的主窗体的源代码。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
testClass t1 = new testClass();
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
t1.changevalue(1000);
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
label1.Text += Convert.ToString(e.ProgressPercentage);
}
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
}
我希望您能够在我的项目中,将以下代码放入名为“testClass.cs”的单独类文件中。我希望能够从这个类中向后台工作者报告进度,以便能够在主表单 label1 中显示进度。
class testClass
{
private int val;
public int changevalue(int i)
{
for (int j = 0; j < 1000; j++)
{
val += i + j;
//from here i need to preport the backgroundworker progress
//eg; backgroundworker1.reportProgress(j);
}
return val;
}
}
但是我无法从“testClass”访问BackgroundWorker。
有人可以告诉我如何解决这个问题吗?
p.s- 我发现这个解决方案,但我不理解它。
BackgroundWorker
与逻辑类分离开来,不仅如此,该类现在可以返回进度而不管它是否与BackgroundWorker
一起使用,你只需要订阅'OnProgressUpdate'事件就可以了。 - sa_ddam213