3

我有一个显示图表和进度条的表单。一些复杂的计算由BackgroundWorker组件进行,以便表单保持响应。结果被附加到一个列表中,然后ReportProgress调用该方法,以便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仅包含两个属性:IterationObjectiveFunction

BackgroundWorker目前,它没有给出任何错误,但在任务完全完成之前图表不会更新。当我将数据分配给图表时,我应该做一些不同的事情还是完全不同的事情?

4

1 回答 1

1

我已经对此进行了排序,基本上后台工作人员的迭代速度比图表更新的速度快。因此,我现在正在清除图表并每次在单独的线程中读取整个结果列表。一旦后台工作程序中的完整逻辑建立起来,这个问题可能会“自我修复”,因为迭代需要更长的时间,但现在这可行。

于 2012-10-19T08:55:00.620 回答