グラフと進行状況バーを表示するフォームがあります。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クラスには と の 2 つのプロパティのみが含まIterationれますObjectiveFunction。
現在、エラーは発生していませんが、BackgroundWorkerタスクが完全に完了するまでグラフは更新されません。データをグラフに割り当てるとき、またはまったく別のことを行う必要がありますか?