Timer控件,CUP占用率很高
我程序中需要不停的通过串口读取重量,我就用了一个timer控件,不停的去读。timer的interval=1000.结果发现cup的占用率很高,都快要到100%了。请问有什么其它的办法吗?
Private Sub GetWeight()'得到重量
If m_Type = "R-22" Then
m_Weight = (Plc_Wr("1", "D62") / 10) & "00"
ElseIf m_Type = "R-134a" Then
m_Weight = (Plc_Wr("1", "D64") / 10) & "00"
End If
End Sub
'在timer中不停的读取重量,并显示进度条。
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
Me.Invoke(New EventHandler(AddressOf GetWeight))
txtAddVolume.Text = m_Weight
If Me.ProgressBar1.Value < Int(Val(txtTotalVolume.Text)) Then
AddVolume += 1
txtAddVolume.Text = AddVolume
txtPercent.Text = Str(Math.Round(Val(AddVolume) / Int(Val(txtTotalVolume.Text)) * 100)) + "%"
Me.ProgressBar1.Value = Val(AddVolume)
Else
StopFreon(m_Area, m_Gongwei, m_Type)
Me.Timer2.Enabled = False
MsgBox("运行结束", MsgBoxStyle.Information + MsgBoxStyle.OkOnly, "结束")
Me.Close()
End If
End Sub
[解决办法]
timer控件本身cpu占不了多少,关键是每步执行过程占用了多少cpu
我做游戏都是20毫秒刷新一次,绘制游戏画面、碰撞处理、逻辑处理,也没见卡
你要做的是把读取串口什么的代码优化,使其在20毫秒内能够运行完毕,这样就感觉不到卡了