0

backgroundworker の progressChanged イベント (このイベント コールバックの文字通り 1 行のコード) でラベル テキストを更新しています。

約 45 秒で約 50 回更新され、問題は UI が約 10 回しか更新されないように見えることです。そのため、UI がイベントの数に「追いついていない」ようです。

とにかくこれを改善するのに役立つものはありますか。人々の提案 APplication.DoEvents() を見ましたが、それは少し危険だといつも思っていました。

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
      lblProgress.Text = "Updating Progress: " +  e.ProgressPercentage;
}

UI のすべての更新を確認できるように、推奨される方法はありますか?

4

2 に答える 2

2

電話してみてください:

this.lblProgress.Refresh();

Text-Property を設定した後

于 2013-02-27T14:53:20.580 に答える
0

これは以前に一度だけ発生したことがありますが、当時、私が見つけた最良の方法は update を呼び出すことでした:

void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
      lblProgress.Text = "Updating Progress: " +  e.ProgressPercentage;
      lblProgress.Update();
}

Refresh()ラベルのテキストがどれほど重要かによっては、代わりに、より迅速な再描画を呼び出すことができます。

于 2013-02-27T14:53:02.127 に答える