我有一个显示图表和进度条的窗体。一些复杂的计算由BackgroundWorker
组件进行,以便表单保持响应。将结果附加到列表中,然后调用ReportProgress
方法,以便ProgressChanged
事件处理程序可以更新进度条(它的作用)。使用BackgroundWorker ProgressChanged事件更新图表?
但是,我正在努力更新成功更新进度栏的相同ProgressChaned
事件处理程序中的图表。我认为这是可能的?我希望在每次迭代BackgroundWorker
后更新图表。我不能直接从BackgroundWorker
更新图表,因为它在另一个线程上工作。
在正试图更新图表的ProgressChanged
事件处理程序的代码如下:
Me.ResultsChart.DataSource = myResultsList
With Me.ResultsChart.Series("Results")
.XValueMember = "Iteration"
.YValueMembers = "ObjectiveFunction"
End With
的myResultsList
名单是相当简单的。它被定义为Private myResultsList As List(Of Results) = New List(Of Results)
。 Results
类只包含两个属性:Iteration
和ObjectiveFunction
。
目前,它不会给出任何错误,但图表不会更新,直到BackgroundWorker
任务完成。当我将数据分配给图表或者完全不同的东西时,我应该做一些不同的事情吗?
它以什么方式不起作用?它会得到一个错误,还是该图表没有更新? –
每次迭代后图表都不会更新,但一旦backrground工人完成,图表就会全部显示。后台工作人员可能会迭代几分钟,所以我想在每次迭代后更新图表。 – sarkyscouser
如果您在ProgressChanged事件处理程序中放置断点,调试器是否显示包含任何数据的'myResultsList'?什么类型的对象是'myResultsList'? –