我正在制作我的第一个 C# GUI。它使用 aBackgroundWorker
来运行计算量大的模拟。定期地,模拟报告(通过ProgressChanged
事件)需要在 GUI 中显示的大量信息。
GUI 分为多个控件,我希望每个控件都知道如何“更新自身”。
在我的研究中,我发现了很多方法可以做到这一点。
- 我能想到的是让方法绑定
ProgressChanged
在 GUI 的每个部分上调用更新方法。 - 我可以
Invalidate
GUI 并将每个控件更新方法绑定到Validating
事件。 - 我可以将每个控件的更新方法绑定到
ProgressChanged
事件。 - 我可以让每个控件实现
INotifyPropertyChanged
接口(但我怀疑这是否可行)
在所有这些选项中,哪一个是在事件发生时更新整个 GUI 的最佳实践ProgressChanged
?(或者我在左场?)
来自评论:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
Simulation simulation = new Simulation();
while(true)
{
simulation.RunIteration();
backgroundWorker.ReportProgress(-1, simulation);
}
}