Чем отличаются «IsEnabled» и «Старт / Стоп» DispatcherTimer? - PullRequest
29 голосов
/ 02 июля 2010

Я думаю, что IsEnabled = false / true одинаково с методом Stop / Start класса System.Windows.Threading.DispatcherTimer. Я прав?

[EDIT] Start (): начать таймер с полным интервалом обратного отсчета. IsEnabled = false: приостановить таймер, отсчет интервала остается. IsEnabled = true: возобновить таймер и продолжить обратный отсчет последнего использованного интервала. Стоп (): остановка таймера, сбросит ли отсчет интервала?

Ответы [ 2 ]

41 голосов
/ 02 июля 2010

Учитывая, что Start/Stop переключает свойство IsEnabled, ваше предположение близко.

Start/Stop отличается при сбросе Interval, тогда как простое переключение IsEnabled не приведет к сбросуInterval.

С MSDN :

Установка IsEnabled на false, когда таймер запускается, останавливает таймер.

Установка IsEnabled наtrue, когда таймер остановлен, запускает таймер.

Start устанавливает IsEnabled в значение true.

Start сбрасывает интервал таймера.

EDIT: Что я имею в виду подСбрасываемый интервал - это не само свойство Interval, а фоновый интервал, который определяет, как долго будет запускаться следующее событие тика.

Например.Если у вас есть интервал в 1000 мс, и вы останавливаете / отключаете его, если для запуска используется 250 мс (он работает в течение 750 мс), это результат зависит от того, как вы запустите его снова.

  • Если вы запустите егос Start(), то пройденный интервал будет сброшен до 0, и это будет 1000 мс до возникновения события Tick.
  • Если вы повторно включите его с помощью IsEnabled = true, он продолжится сэто текущее местоположение, и событие Tick будет возбуждено через 250 мс.

Надеюсь, это прояснит это для вас.

5 голосов
/ 28 ноября 2012

Реализация DispatcherTimer.IsEnabled

    public bool IsEnabled
    {
       get
       {
           return _isEnabled;
       }
       set
       {
           lock (_instanceLock)
           {
               if (!value && _isEnabled)
               {
                   Stop();
               }
               else
               {
                   if (!value || _isEnabled)
                       return;
                   Start();
               }
           }
       }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...