在定时器内部加了while循环,执行的时候界面跟死机了一样,数字变化,颜色变化均无,等完全执行完才会恢复。根据网友的建议加入了application.doevents(),但是这样的话,循环里的动作一直在执行,不会停,该怎么办?
private void timer1_Tick(object sender, EventArgs e)
{
if (measureflag == true)
{
int circlenum = Convert.ToInt32(label14.Text);
ENC7480.Enc7480_Reset_Latch_Flag(0);
ENC7480.Enc7480_Set_Encoder(0, 0);
while (i < circlenum + 1)
{
Application.DoEvents();
long a = ENC7480.Enc7480_Read_Latch_Status(0);
lanchStaus = ENC7480.Enc7480_Read_Latch_Status(0) & 0x100;
if (lanchStaus == 0x100)
{
button1.BackColor = Color.Red;
circle.Text = (circlenum - i).ToString();
long b = ENC7480.Enc7480_Get_LatchValue(0);
data.Add(b);
ENC7480.Enc7480_Reset_Latch_Flag(0);
i++;
}
}
measureflag = false;
insertdata();
Measure.Text = "测量";
Measure.BackColor = Color.Lime;
}
}