プログレスバーを実装する方法について多くの質問がありましたが、私はそれらすべてを完了したと思いますが、プログレスバーが機能しない理由はまだわかりません。
まあ、それは操作が行われた後にのみ機能するようです、それはもちろん私が望むものではありません。主な操作がそのことをしているので、プログレスバーを機能させたいです。
私のコードはかなり長くて苦痛なので、できるだけ基本的なものにするためにコードを単純化するつもりです。
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
//Main UI Operation
}
private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
// Wait 100 milliseconds.
Thread.Sleep(100);
// Report progress.
backgroundWorker1.ReportProgress(i); }
}
private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
私が言ったように、プログレスバーはメインのUI操作の後にのみ開始されます。
WorkerReportsProgressはTrueに設定されています。最小値と最大値はそれぞれ0と100です。
これはスレッドについての理解が不足しているのではないかと思います。