簡體   English   中英

計時器不停止C#

[英]timer doesn't stop 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM