我认为IsEnabled = false / true与System.Windows.Threading.DispatcherTimer类的Stop / Start方法相同 我是对的吗?
[编辑] Start():以完整间隔倒计时开始计时器。 IsEnabled = false:暂停计时器,间隔倒计时仍然存在。 IsEnabled = true:恢复计时器&继续使用上次使用的间隔倒计时。 停止():停止计时器,间隔倒计时会重置吗?
答案 0 :(得分:41)
考虑到Start/Stop
切换IsEnabled
属性,您的假设很接近。
Start/Stop
因重置Interval
而有所不同,因为切换IsEnabled
不会重置Interval
。
来自MSDN:
将IsEnabled设置为false时 计时器启动会停止计时器。
将IsEnabled设置为true 计时器停止启动计时器。
开始将IsEnabled设置为true。
开始重置计时器间隔。
编辑: 我所说的重置间隔不是Interval属性本身,而是确定触发下一个tick事件的时间长度的背景间隔。
EG。如果你有一个1000毫秒的间隔,你停止/禁用它,如果运行250毫秒(它运行750毫秒),这是结果取决于你如何再次启动它。
Start()
启动它,则传递的时间间隔将重置为0,并且会在Tick
事件被提升之前的1000毫秒。IsEnabled = true
重新启用它,那么它将从当前位置继续,Tick
事件将在250毫秒内提升。我希望这能为你澄清一下。
答案 1 :(得分:5)
DispatcherTimer.IsEnabled
的实施 public bool IsEnabled
{
get
{
return _isEnabled;
}
set
{
lock (_instanceLock)
{
if (!value && _isEnabled)
{
Stop();
}
else
{
if (!value || _isEnabled)
return;
Start();
}
}
}
}