プログレスバーにバグがあり、どうすればよいかわかりません。
0 から 100 まで実行される for サイクル (またはループ) があり、進行状況を報告するだけで、100 ミリ秒スリープします。
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i <= 100; i++)
{
backgroundWorker.ReportProgress(i);
Thread.Sleep(100);
}
}
そして、progresschanged イベント ハンドラー メソッドには、他のいくつかのものに加えて、2 つの "if" があります。
if (matchProgressBar.Value == 50)
{
OnHalfTime(); //listBox1.Add("Halftime!");
}
if (matchProgressBar.Value == 100)
{
OnFullTime(); //listBox1.Add("Full time!");
}
2 つの「不明な」メソッドは、listBox に行を追加することです。最初のケース: "Halftime!"; そして2番目:「フルタイム!」。そして、両方の行の後に同じ "Thread.Sleep(5000);" があります。//ハーフタイムに休憩が必要だからです:) //
しかし問題は、listBox1 は既に更新されているのに、プログレスバーが更新される前に GUI が 5 秒スリープすることです。(そのため、プログラムは 49% と 99% で 5 秒間スタックします。)
質問: これを修正するために何かできることはありますか?