私は初めてのC#GUIを作成しています。を使用してBackgroundWorker
、計算量の多いシミュレーションを実行しています。シミュレーションは定期的に(ProgressChanged
イベントを通じて)GUIに表示する必要のあるかなりの量の情報を報告します。
GUIはコントロールに分割されており、各コントロールに「自分自身を更新する」方法を知ってもらいたいです。
私の研究では、これを行うことができるかもしれない多くの方法を見つけました。
ProgressChanged
GUIの各部分で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);
}
}