所遇问题

描述:在使用定时器设置泵的运行状态时 ,可以成功运行 ,但是会一卡一卡的

image

这里猜测的是定时器时间设置过短导致它本身一个周期还未运行完成就重新开启下一轮的运行

但是将时间设置大了之后 ,结果并不是这样子的 ,还是会出现一卡一卡的状态

解决办法

对其进行一个变化更新 ,也就是拿它的当前值与上次值去进行一个对比 ,如果不一样 ,就说明值发生了 ,这个时候再去进行一个更新

代码展示:

1
2
3
4
5
6
private void updateTimer_Tick(object sender, EventArgs e)
{
// 模拟从PLC读取一个泵的状态数据
bool state = true;
this.pump1.PumpState = state ? NorthControLib.PumpState.运行 : NorthControLib.PumpState.停止;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[Browsable(true)] // 是否显示属性
[Category("自定义属性")] // 属性分组
[Description("设置或获取泵的当前状态")]
public PumpState PumpState
{
get { return pumpState; }
set
{
if (pumpState != value)
{
pumpState = value;
switch (pumpState)
{
case PumpState.运行:
this.pic_Pump.Image = Properties.Resources.PumpRun;
break;
case PumpState.停止:
this.pic_Pump.Image = Properties.Resources.PumpStop;
break;
case PumpState.故障:
this.pic_Pump.Image = Properties.Resources.PumpFault;
break;
case PumpState.备用:
this.pic_Pump.Image = Properties.Resources.PumpSpare;
break;
}
}

}
}

image