我正在创建一个程序,每当它收到消息" 000000000"时,它将绘制graph.i尝试使用Timer。我在Form_Load事件中启动Timer。当它收到消息" 0000000"(在其他线程中)时,我启用定时器:timer1.Enabled = true; 。它工作但它总是绘制和重绘图形,永远不会停止,我尝试在第一次完成绘图后禁用计时器。但是当我禁用计时器:timer1.Enabled = false;时,它第一次绘制,然后我收到" 0000000"消息多一次(),它不再绘制了。我希望它只有一次收到" 0000000"信息。请帮我。这是我的代码。
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
我在Form_Load上启动计时器。
if (cnvertMsg == "0000000000000000" || cnvertMsg == "00000000")
{
timer1.Enabled = true;
isStart = true;
}
当消息" 00000000"收到,我启用计时器。此代码不在GUI线程中。
private void timer1_Tick(object sender, EventArgs e)
{
if (isStart && !backgroundWorker1.IsBusy)
{
if (!ps.ComPort.IsOpen)
{
isStart = false;
MessageBox.Show("device is disconnected!");
return;
}
if (String.IsNullOrEmpty(FormSettings.openFileName))
{
isStart = false;
MessageBox.Show("pls chose your file by clicking tool!");
return;
}
if (String.IsNullOrEmpty(FormSettings.saveFileName))
{
isStart = false;
MessageBox.Show("pls chose where to save results ly clicking tool!");
return;
}
try
{
listView1.Items.Clear();
clearGraph();
OnStop = false;
Ontest = true;
progressBar1.Maximum = ps.Step;
progressBar1.Value = progressBar1.Minimum;
backgroundWorker1.RunWorkerAsync();
btnTest.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
timer1.Enabled = false;
}
isStart = false;
timer1.Enabled = false;
}
}
这是timer_tick事件。