我认为IsEnabled = false/true与System.Windows.Threading.DispatcherTimer类的Stop/Start方法完全相同我说对了吗?
[编辑]开始():以完整间隔倒计时开始计时器.IsEnabled = false:暂停计时器,间隔倒计时仍然存在.IsEnabled = true:恢复计时器并继续使用上次使用的间隔倒计时.停止():停止计时器,间隔倒计时会重置吗?
Ala*_*tts 42
考虑到Start/Stop切换IsEnabled财产,你的假设很接近.
Start/Stop因Interval重置而不同,只是切换IsEnabled不会重置Interval.
来自MSDN:
启动计时器时将IsEnabled设置为false会停止计时器.
当计时器停止时将IsEnabled设置为true将启动计时器.
开始将IsEnabled设置为true.
开始重置计时器间隔.
编辑:重置间隔的意思不是Interval属性本身,而是确定触发下一个tick事件的时间长度的背景间隔.
例如.如果你有一个1000毫秒的间隔,你停止/禁用它,如果运行250毫秒(它运行750毫秒),这是结果取决于你如何再次启动它.
Start(),那么传递的间隔将重置为0,它将在Tick事件引发之前1000ms .IsEnabled = true那么它将从它的当前位置继续,并且Tick事件将在250ms内提升.我希望这能为你澄清一下.
DispatcherTimer.IsEnabled的实现
public bool IsEnabled
{
get
{
return _isEnabled;
}
set
{
lock (_instanceLock)
{
if (!value && _isEnabled)
{
Stop();
}
else
{
if (!value || _isEnabled)
return;
Start();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13419 次 |
| 最近记录: |