2 つのプログレスバーと 1 つのバックグラウンドワーカーを含む単純なフォームがあります。私は 2 つのループ (1 つが他のループ内) を持っており、インクリメントされた各ループの進行状況を報告したいと思います。ここに私が持っているコードがあります:
private void buttonStart_Click(object sender, EventArgs e)
{
workerCustomers.RunWorkerAsync();
}
private void workerCustomers_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
progressBar2.Value = (int)e.UserState;
}
private void workerCustomers_DoWork(object sender, DoWorkEventArgs e)
{
for (int customer = 0; customer < 50; customer++)
{
int customerPercentage = ++customer * 100 / 50;
workerCustomers.ReportProgress(customerPercentage, 0);
for (int location = 0; location < 500; location++)
{
int locationPercentage = ++location * 100 / 500;
workerCustomers.ReportProgress(customerPercentage, locationPercentage);
}
workerCustomers.ReportProgress(customerPercentage, 0);
}
}
プログラムが実行されると、progressbar1 は正常に更新されますが、progressbar2 は移動しません。デバッガーで実行すると、progressbar2 の値が変更されていることがわかります。グラフィカルに変更はありません。何か案は?