Timer.start() unexpectedly?

本文关键字:unexpectedly start Timer | 更新日期: 2023-09-27 18:13:38

private void PlayerClockInPanelControl_Load(object sender, EventArgs e)
{
    InitializedMouseDownEvent();
}
private void InitializedMouseDownEvent() 
    {
        aTimer = new System.Timers.Timer();
        aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        aTimer.Interval = 2000;
        aTimer.Enabled = true;
    }
private void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        this.ShowErrorMessage("Hello");
        aTimer.Stop();
    }
private void picturebox_MouseDown(object sender, EventArgs e)
    {
        aTimer.Start();
    }

private void picturebox_MouseUp(object sender, EventArgs e)
    {
        aTimer.Stop();
    }

我的想法是,计时器应该只在MouseDown事件被触发时启动,但现在一旦表单加载,它每秒显示"Hello"。正如代码中提到的,在MouseDown事件期间只有aTimer.Start()被调用。我可以知道怎么了吗?

Timer.start() unexpectedly?

您得到这种行为是因为timer.Start()timer.Enabled = true(以及timer.Stop()timer.Enabled = false)之间没有区别。因此,如果在formLoad中调用 timer.Enabled = true,则启动定时器。
有关更多信息,请查看此MDSN页面