C# 从另一个线程更新图表

C# 从另一个线程更新图表,c#,.net,multithreading,C#,.net,Multithreading,目前,我有一组从一个线程捕获的传感器的值。我想“实时”将这些值绘制到图表上,比如说每1秒 因此,我通常会这样做(在非线程版本中): 1) 将数据放入列表中 2) 单击按钮运行myChart.Refresh() 3) 触发OnPaint()以绘制图形 然而,我意识到我不能在线程中触发OnPaint()。我还知道有一个BackgroundWorker类,但我不确定如何用它触发OnPaint()方法。OnPaint()只能在主UI线程上调用,因为它需要绘制图形和更新UI。您可以使用Dispatcher

目前,我有一组从一个线程捕获的传感器的值。我想“实时”将这些值绘制到图表上,比如说每1秒

因此,我通常会这样做(在非线程版本中):

1) 将数据放入列表中

2) 单击按钮运行
myChart.Refresh()

3) 触发
OnPaint()
以绘制图形

然而,我意识到我不能在线程中触发
OnPaint()。我还知道有一个
BackgroundWorker
类,但我不确定如何用它触发
OnPaint()
方法。

OnPaint()只能在主UI线程上调用,因为它需要绘制图形和更新UI。您可以使用Dispatcher类从任何线程进行交互和执行UI操作。
请参阅此部分以了解有关dispatchers的更多信息。

您是否已经有线程代码?请尝试在form load事件中编写代码“Control.CheckForIllegalCrossThreadCalls=false”,因此您可以从线程调用OnPaint()方法,而无需使用BackgroundWorker