我有一些C#控件,例如NumericUpDown
或TextBox
,并希望以偏移几秒钟的时间触发事件。过去,我是通过Timer
完成此行为的。我正在使用的代码使用BackgroundWorker
完成此操作。在其他一些地方,我找到了正常的线程来建立这种行为。
例如可能需要偏移量的原因是一种耗时的方法,该方法在每次NumericUpDown的ValueChange之后执行。如果用户在向下箭头上单击几次,则最后一次单击才是重要的,因为这是用户最终想要的值。
我以前处理此问题的方式如下
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
/*
* Designer Code
this.eventOffsetTimer.Interval = 500;
this.eventOffsetTimer.Tick += new System.EventHandler(this.eventOffsetTimer_Tick);
*/
eventOffsetTimer.Stop();
eventOffsetTimer.Start();
}
private void eventOffsetTimer_Tick(object sender, EventArgs e)
{
eventOffsetTimer.Stop();
//Time consuming stuff...
MessageBox.Show(numericUpDown1.Value.ToString());
}
我想知道最佳实践是在触发事件之前完成几秒钟的补偿。 Microsoft是否鼓励使用内置方法?启动和停止计时器很简单,但是似乎可以使用Microsoft鼓励的方法。
答案 0 :(得分:0)
您应该使用.Restart()
。它首先释放Timer,然后再次启动。
提示:您无需将.Stop()
与.Restart()
一起使用