计时器不停止 C#



当用户按下按钮时,我正在使用表单中的计时器在每 3 秒向控制器发送命令。用户再次按下同一按钮后,计时器应停止。但就我而言,计时器不会停止。我通过以下方式使用计时器。

private void autoModeTempBtn_Click(object sender, EventArgs e)
    {
        System.Timers.Timer tempTimer = new System.Timers.Timer(3000);
        tempTimer.SynchronizingObject = this;
        tempTimer.AutoReset = true;
        if (autoModeTempBtn.Text == "Get Temperature Auto Mode")
        {
            autoModeTempBtn.Text = "hello";
            tempTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTemperatureEvent);
            tempTimer.Enabled = true;
        }
        else /*user presses button second time */
        {
            tempTimer.Stop();
            tempTimer.AutoReset = false;
            tempTimer.Enabled = false;
            autoModeTempBtn.Text = "Get Temperature Auto Mode";
        }
    }
    private void OnTemperatureEvent(object source, System.Timers.ElapsedEventArgs e)
    {
       //do something
    }

我哪里犯了错误?

每次单击该按钮时,您都会创建新的计时器。创建一次计时器,每次单击时只需启动/停止它。此外,您应该使用System.Windows.Forms.Timer而不是System.Timers.Timer

var _timer = new Timer() { Interval = 3000 };
private void autoModeTempBtn_Click(object sender, EventArgs e)
{
    if (!validateSerialNumber())
        return;
    if (!_timer.Enabled)
    {
        _timer.Start();
        autoModeTempBtn.Text = "hello";
    }
    else
    {
        _timer.Stop();
        autoModeTempBtn.Text = "Get Temperature Auto Mode";
    }
}

并将此代码添加到构造函数中:

_timer.Tick += OnTemperatureEvent;

最新更新