我有一个Windows窗体类frmProcessSalary,并且实现了setProgress内部方法。
public partial class frmProcessSalary : Form
{
public void setProgress()
{
int i;
progressBar1.Minimum = 0;
progressBar1.Maximum = 200;
for (i = 0; i <= 200; i++)
{
progressBar1.Value = i;
}
}
}
从外面的另一个类我创建对此的引用并调用此方法。
frmProcessSalary newProcessSalary = new frmProcessSalary();
newFrmProcessSalary.setProgress();
在这个外部类中,我在调用此frmProcessSalary
方法时执行了数百个查询。但进度条不会继续。
我尝试了Application.DoEvents()
,但没有成功。
请问好吗?
答案 0 :(得分:1)
如果您在主线程中运行查询,UI将不会响应,直到工作完成。尝试使用BackgroundWorker。
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += DoWork;
bw.ProgressChanged += SetProgress;
bw.RunWorkerAsync()
在DoWork中,您必须致电
bw.ReportProgress(percent)
答案 1 :(得分:0)
public void setProgress()
{
int i;
progressBar1.Minimum = 0;
progressBar1.Maximum = 200;
for (i = 0; i <= 200; i++)
{
progressBar1.Value = i;
Application.DoEvents();
}
}