多线程 - 在VB中添加指向系列的点

时间:2016-03-19 14:20:03

标签: c# vb.net multithreading charts series

美好的一天

图表中添加了一组3个系列:

(chrtReadTimePlot is private)
chrtRealTimePlot.Series.Add(SerRT_B_Voltage)
chrtRealTimePlot.Series.Add(SerRT_Charge_Current)
chrtRealTimePlot.Series.Add(SerRT_P_Voltage)

每个系列都有get set种方法

问题:每个系列都有基于Threading.Timer.Tick()添加的数据点:

SerRT_B_Voltage.Points.AddXY(MPPTdata(x1,y1)
SerRT_Charge_Current.Points.AddXY(x2,y2)
SerRT_P_Voltage.Points.AddXY(MPPTdata(x3,y)

当向这些系列之一添加一个点时,我会收到一个跨线程错误。

错误:

  

未处理的类型' System.InvalidOperationException'   发生在System.Windows.Forms.dll

中      

附加信息:跨线程操作无效:控制   ' chrtRealTimePlot'从线程以外的线程访问   创建于。

我不知道在这种情况下如何使用Invoke

任何想法/建议都会有很大的帮助!

1 个答案:

答案 0 :(得分:2)

因为我没有足够的评分而无法评论......

您必须使用委托才能从另一个线程安全地更新GUI。请阅读:http://tech.xster.net/tips/invoke-ui-changes-across-threads-on-vb-net/

当我遇到同样的问题时,这篇文章对我很有帮助。