美好的一天
图表中添加了一组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
任何想法/建议都会有很大的帮助!
答案 0 :(得分:2)
因为我没有足够的评分而无法评论......
您必须使用委托才能从另一个线程安全地更新GUI。请阅读:http://tech.xster.net/tips/invoke-ui-changes-across-threads-on-vb-net/
当我遇到同样的问题时,这篇文章对我很有帮助。