gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:39:08 26 4
gpt4 key购买 nike

我有一个包含两个系列主要和次要 y 轴的图表。我想使用委托(delegate)向图表添加值。当我添加时,出现“跨线程操作无效”异常。请引用下面我的代码。

    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);

如果您的类派生自 Form,则使用此方法:

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

或者如果您的类派生自 Page:

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

关于c# - 如何在 C# 中使用委托(delegate)向图表添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34593383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com