我认为IsEnabled = false/true等同于System.Windows.Threading.DispatcherTimer类的停止/启动方法,对吗?
编辑Start():以全间隔倒计时开始计时器。IsEnabled = false :暂停计时器,保持间隔倒计时。IsEnabled = true :恢复计时器并继续上次使用的间隔倒计时。Stop():停止计时器,间隔倒计时会重置吗?
发布于 2010-07-02 13:00:01
考虑到Start/Stop切换了IsEnabled属性,您的假设已经很接近了。
Start/Stop的不同之处在于Interval被重置,只是切换IsEnabled不会重置Interval。
来自MSDN
在计时器启动时将IsEnabled设置为false将停止计时器。
当计时器停止时,将IsEnabled设置为true将启动计时器。
Start将IsEnabled设置为true。
开始重置计时器间隔。
编辑:我所说的被重置的间隔不是interval属性本身,而是决定触发下一个tick事件的时间间隔。
例如:如果你有一个1000ms的间隔,如果你在250ms的时间内停止/禁用它(它运行了750ms),这是取决于你如何再次启动它的结果。
Start()启动它,则传递的间隔将重置回0,并且在引发Tick事件之前将为1000ms。IsEnabled = true重新启用它,则它将从其当前位置继续,并且将在250ms内引发Tick事件。我希望这能为你澄清这一点。
发布于 2012-11-28 14:36:43
DispatcherTimer.IsEnabled的实现
public bool IsEnabled
{
get
{
return _isEnabled;
}
set
{
lock (_instanceLock)
{
if (!value && _isEnabled)
{
Stop();
}
else
{
if (!value || _isEnabled)
return;
Start();
}
}
}
}https://stackoverflow.com/questions/3163300
复制相似问题