这是我第一次遇到这样的问题。这不是我的职业,只是我的爱好,我没有以前的参考资料。在我的程序中,我一一添加了几个功能来控制机器。添加最后一个功能(温度测量)后,我开始在其他功能上遇到问题(其中大约 8 个一起运行。我遇到的问题在与此无关的图表(电机的 RPM)上功能但受其影响。您会看到这两个图表在运行和不运行温度测量时的差异。两个图表中电机的实际速度相同,但在第二个图表中,由于应用程序变慢,我在运行中松散了碎片向下。
不带温度功能。 带温度功能
特别是这个功能干扰了上述控制,我认为是因为应用程序的工作量变得很重,或者因为我需要采样所以有一些时间等待获得它们:
private void AddT(decimal valueTemp)
{
sumTemp += valueTemp;
countTemp += 1;
if (countTemp >= 20) //take 20 samples and make average
{
OnAvarerageChangedTemp(sumTemp / countTemp);
sumTemp = 0;
countTemp = 0;
}
}
private void OnAvarerageChangedTemp(decimal avTemp)
{
float val3 = (float)avTemp;
decimal alarm = avTemp;
textBox2.Text = avTemp.ToString("F");
if (alarm > 230)
{
System.Media.SoundPlayer player = new System.Media.SoundPlayer();
player.Stream = Properties.Resources.alarma;
player.Play();
timer4.Start();
}
else
{
timer4.Stop();
panel2.BackColor = SystemColors.Control;
}
}
我想知道在不同的线程上运行这个函数是否可以解决问题,我该怎么做?或者,如果有不同的方法来解决问题。示例代码将不胜感激。
更新,添加方法调用。
这就是我调用方法 AddT 的方式
if (b != "")
{
decimal convTemp; //corrente resistenza
decimal.TryParse(b, out convTemp);
AddT(convTemp);}
这就是我从串行接收数据并将其传递给去除不常见字符并将值返回给不同变量的类的方式。 这是去除不常见的字符并返回值的类。这就是我管理串行传入数据的方式。看到我的编码后请不要嘲笑我。我做不同的工作,我正在自学。