跨线程操作无效:控件“chart1”从创建它的线程以外的线程访问

Posted

技术标签:

【中文标题】跨线程操作无效:控件“chart1”从创建它的线程以外的线程访问【英文标题】:Cross-thread operation not valid: Control 'chart1' accessed from a thread other than the thread it was created on 【发布时间】:2016-06-11 12:39:24 【问题描述】:

在某些情况下,我会尝试更新我的图表。我用另一种方法调用Plot 方法。我找到了this 解决方案,但它是针对文本框的,所以我无法在我的代码中实现它。我在互联网上搜索,但找不到图表的解决方案。

如何解决向图表添加点的问题?

private void Plot()
    
            chart1.Series["test1"].Points.AddXY
                            (plotValues[0,1], plotValues[0,0]);
            chart1.Series["test1"].Points.AddXY
                           (plotValues[1, 1], plotValues[1, 0]);

    

【问题讨论】:

链接中的答案到底有什么问题? 【参考方案1】:
Dispatcher.Invoke(() => chart1.Series["test1"].Points.AddXY
                        (plotValues[0,1], plotValues[0,0]));

(或 InvokeAsync 以防您要运行是异步的/不需要等待其他线程上的操作完成)

【讨论】:

以上是关于跨线程操作无效:控件“chart1”从创建它的线程以外的线程访问的主要内容,如果未能解决你的问题,请参考以下文章

跨线程操作无效:控件从创建它的线程以外的线程访问

跨线程操作无效:控件'listBox1'从一个>线程访问,而不是它在[重复]上创建的线程

不一致的“跨线程操作无效”异常

跨线程Winforms控件编辑[重复]

跨线程操作无效[重复]

C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它