События таймера, инкременты и сбросы в C # - PullRequest
0 голосов
/ 09 марта 2010

В моем приложении C # используется таймер, чтобы определить, произошло ли ожидаемое событие во время своевременного поста. Вот как я сейчас пытаюсь это сделать:

// At some point in the application where the triggering event has just occured.
   // Now, the expected event should happen within the next second.
   timeout = false;
   timer1.Interval = 1000; // Set timeout for 1 second.
   timer1.Start();

timer1_Tick(object sender, EventArgs e)
{
   timeout = true;
}

// At some point in the application where the expected event has occured.
   timer1.Stop();

// At a later point in the application where the timeout is
// checked, before procedding.
   if ( timeout )
   {
      // Do something.
   }

Теперь меня интересует, когда вызываются методы-члены Start() или Stop(), что приводит к сбросу счетчика таймера? Я использую Microsoft Visual C # 2008 Express Edition. Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 марта 2010

Когда вы вызываете Stop () , он эффективно сбрасывает таймер обратно на 0 со связанной страницы:

Calling Start после того, как вы отключили таймер по вызову Stop вызовет Таймер перезапуска прерван интервал. Если ваш таймер настроен на 5000-миллисекундный интервал, и вы Стоп звонка на 3000 миллисекунд, вызов Start вызовет таймер ждать 5000 миллисекунд, прежде чем поднятие тика.

0 голосов
/ 09 марта 2010

С MSDN :

Вызов Start после того, как вы отключили таймер, вызвав Stop, заставит таймер перезапустить прерванный интервал. Если для вашего таймера задан интервал в 5000 миллисекунд, и вы вызываете Stop примерно через 3000 миллисекунд, то при вызове Start таймер будет ждать 5000 миллисекунд, прежде чем вызвать событие Tick.

...