首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DispatcherTimer的'IsEnabled‘和'Start/Stop’有什么不同?

DispatcherTimer的'IsEnabled‘和'Start/Stop’有什么不同?
EN

Stack Overflow用户
提问于 2010-07-02 12:54:05
回答 2查看 14.7K关注 0票数 31

我认为IsEnabled = false/true等同于System.Windows.Threading.DispatcherTimer类的停止/启动方法,对吗?

编辑Start():以全间隔倒计时开始计时器。IsEnabled = false :暂停计时器,保持间隔倒计时。IsEnabled = true :恢复计时器并继续上次使用的间隔倒计时。Stop():停止计时器,间隔倒计时会重置吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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事件。

我希望这能为你澄清这一点。

票数 47
EN

Stack Overflow用户

发布于 2012-11-28 14:36:43

DispatcherTimer.IsEnabled的实现

代码语言:javascript
复制
    public bool IsEnabled
    {
       get
       {
           return _isEnabled;
       }
       set
       {
           lock (_instanceLock)
           {
               if (!value && _isEnabled)
               {
                   Stop();
               }
               else
               {
                   if (!value || _isEnabled)
                       return;
                   Start();
               }
           }
       }
    }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3163300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档