未显示进度条

时间:2016-02-23 10:18:38

标签: c#

我有一个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(),但没有成功。

请问好吗?

2 个答案:

答案 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();
            }

        }