我用按钮控制timer的enable属性,但是总是会产生操作延时,是什么原理啊?求参考资料。
下附代码: private void timer1_Tick(object sender, EventArgs e)
        {
            this.progressBar1.Value = (timercounter);//updata the progress bar            //updata the label of time show
            int result = this.TimeCalculate(out TimeShow);
            this.lb_TimeShow.Text = TimeShow;            
                            //alarm of time up
            if (timercounter == frm_Start.TimeLimit)
            {
                this.progressBar1.Value = (frm_Start.TimeLimit);                this.timer1.Enabled = false;
            }
            timercounter++;
        }        private void btn_OnHold_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            btn_StartTimer.Enabled = true ;
        }

解决方案 »

  1.   

    任何timer,都是只能保证Interval之后可以触发事件,也就是基于延迟时间来驱动,而不是保证某事某刻必定触发事件。也就是说,如果你掐着表去计算,那么必定所有的timer都是延迟的,因为这根本就不是同一个概念。.net有多种timer,他们的底层机制不同。例如有的是靠主线程的消息循环驱动的,那么“不准确”就更加明显。你可以查一下msdn,看看哪一种timer更准确。另外使用timer的tick时,首先应该调用 timer1.Enabled = false;然后处理完之后再调用  timer1.Enabled = true;