110,499
社区成员
发帖
与我相关
我的任务
分享
// 数据接收
lock (obj)
{
queue1.Enqueue(new KeyValuePair<int, int>(Points[0], Points[2]));
}
//UI线程
lock (obj)
{
XYData = XYValue.ToList();
}
foreach (var keyValuePair in XYData)
{
lsitX.Add(keyValuePair.Key.ToString());
lsitY.Add(keyValuePair.Value);
}
seriesDraw.Points.DataBindXY(lsitX, lsitY);
piantTick(afterPoints[0], afterPoints[2]);//接收的数据用委托来绘制
private delegate void piantChart(int x,int y);//委托
private void piantTick(int x, int y) //委托方法
{
if (chart1.InvokeRequired)
{
chart1.Invoke(p, new object[] { x, y });
}
else
{
seriesDraw.Points.AddXY(x, y);//加点
}
}
seriesDraw.Points.AddPoint(new Point(){x=1,y=2});
然后其实也不需要什么锁了.
在数据接收的代码中 执行这句话就OK了.
因为你现在的方式 整体绑定.. 相当于重绘了 效率肯定不行. 而且我感觉还有严重的闪烁..
如果这个控件还不支持AddPoint 那我建议你换一个控件吧..
你这个不会是mschart吧?