私は初めてのC#GUIを作成しています。を使用してBackgroundWorker、計算量の多いシミュレーションを実行しています。シミュレーションは定期的に(ProgressChangedイベントを通じて)GUIに表示する必要のあるかなりの量の情報を報告します。
GUIはコントロールに分割されており、各コントロールに「自分自身を更新する」方法を知ってもらいたいです。
私の研究では、これを行うことができるかもしれない多くの方法を見つけました。
ProgressChangedGUIの各部分でupdateメソッドを呼び出すメソッドbougndを用意することも考えられました。- GUIを使用して、各コントロールの更新メソッドをイベント
Invalidateにバインドできます。Validating ProgressChanged各コントロールのupdateメソッドをイベントにバインドできます。- 各コントロールにインターフェイスを実装させることもでき
INotifyPropertyChangedます(ただし、これが機能するかどうかについては懐疑的です)
これらすべてのオプションのうち、ProgressChangedイベント時にGUI全体を更新するためのベストプラクティスはどれですか。(または私は左翼手に出ていますか?)
コメントから:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
Simulation simulation = new Simulation();
while(true)
{
simulation.RunIteration();
backgroundWorker.ReportProgress(-1, simulation);
}
}