C# 如何在c中使用委托向图表添加值#

C# 如何在c中使用委托向图表添加值#,c#,C#,我有一个带有两个系列主y轴和次y轴的图表。我想使用委托向图表添加值。添加时,出现“交叉线程操作无效”异常。请参考下面我的代码 public delegate void SetTextDel(string Xvalue,double Y1value,double Y2Value); Thread Thread1=new Thread(createGraph); private void SetText(string XValue,double Y1Value,

我有一个带有两个系列主y轴和次y轴的图表。我想使用委托向图表添加值。添加时,出现“交叉线程操作无效”异常。请参考下面我的代码

    public delegate void SetTextDel(string Xvalue,double Y1value,double 

    Y2Value);
    Thread Thread1=new Thread(createGraph);

    private void SetText(string XValue,double Y1Value,double Y2Value)
    {
         if (this.chart1.InvokeRequired)
         {
             this.chart1.Series[0].Points.AddXY(XValue, Y1Value);        
             this.chart1.Series[1].Points.AddXY(XValue, Y2Value);       
         }       
    }

    private void createGraph()  
    { 
        while(true)
        { 
             string time;
             int  Y1value =0;
             int  Y2value =0;

             time="abc";
             Y1value = 10;
             Y2value = 20;

             SetTextDel = new SetTextDel(SetText);
             SetText(time,oilvalue,tempvalue);

             Y1value +=5;
             Y2value +=5;
        }       
   }

   private void startbtn_Click(object sender, EventArgs e)
   {
       Thread1.Start();
   }
替换

         this.chart1.Series[0].Points.AddXY(XValue, Y1Value);        
         this.chart1.Series[1].Points.AddXY(XValue, Y2Value);  
如果您的类派生自表单,则使用此选项:

         BeginInvoke((Action)(() => {
             this.chart1.Series[0].Points.AddXY(XValue, Y1Value);        
             this.chart1.Series[1].Points.AddXY(XValue, Y2Value);  
         }));
或者,如果您的类来自页面,则使用此选项:

         Dispatcher.BeginInvoke((Action)(() => {
             this.chart1.Series[0].Points.AddXY(XValue, Y1Value);        
             this.chart1.Series[1].Points.AddXY(XValue, Y2Value);  
         }));

如果
InvokeRequired
true
,那么您实际上应该调用,请参见答案。我尝试了上面的代码,但显示错误“名称分派器在当前上下文中不存在”。@sowjanyaattaluri您可以显示您的类声明(对于SetText()所属的类)吗?我的类声明为“public partial class Frm_Main:Form”@sowjanyaattaluri很有意义。我更新了答案。我尝试了上面的代码,效果很好。非常感谢。