Подтвердить что ты не робот

В чем разница между "IsEnabled" и "Start/Stop" DispatcherTimer?

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

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

4b9b3361

Ответ 1

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

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

От MSDN:

Настройка IsEnabled на значение false, если таймер запускает таймер.

Значение IsEnabled равно true, если таймер останавливает таймер.

Запускает значение IsEnabled в true.

Начало сбрасывает интервал таймера.

EDIT: То, что я подразумеваю под интервалом reset, не является самим свойством Interval, а фоновым интервалом, определяющим, сколько времени будет продолжаться до следующего события тика.

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

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

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

Ответ 2

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

    public bool IsEnabled
    {
       get
       {
           return _isEnabled;
       }
       set
       {
           lock (_instanceLock)
           {
               if (!value && _isEnabled)
               {
                   Stop();
               }
               else
               {
                   if (!value || _isEnabled)
                       return;
                   Start();
               }
           }
       }
    }