Таймер. Работа с таймером в C#

Доброго времени суток! В этой статье я расскажу об использовании таймера в программах, написанных на C#, а в конце мы напишем простейшую программу часы. Статья будет практического характера и для её понимания Вам нужно владеть начальными знаниями программирования на языке C# и работы с WindowsForms приложениями. Но сначала, я расскажу для чего же нужны таймеры в программах. Чаще всего, таймеры используют для периодического вызова определенного метода (подпрограммы). У компонента «Timer» есть специальное (и единственное событие) — «Tick». Вот обработчик этого события, далее обработчик таймера, и вызывается с заданной программистом периодичностью.

Как я уже сказал, рассказ о таймерах будет в контексте WindowsForms. Так что я предлагаю создать новый проект приложения с графическим интерфейсом (WindowsForms). После чего, на главную форму из панели инструментов перенести компонент «Timer». Расположение компонента «Timer» в панели инструментов показано на рисунке ниже.

Компонент Timer

Компонент Timer

Данный компонент не является видимым на форме, поэтому, в дизайнере форм Вы его не увидите, но он будет в неком контейнере по формой, как показано на рисунке ниже.

Компонент Timer в дизайнере (под формой)

Компонент Timer в дизайнере (под формой)

И если выбрать данный компонент в дизайнере форм, то можно увидеть его свойства, которых не так много — всего шесть. Я расскажу о самых важных, которые мы будем использовать. А сейчас, давайте посмотрим на свойства таймера (см. рисунок ниже).

Свойства компонента Timer

Свойства компонента Timer

  • Свойство «Name» задает название таймера (скорее даже его уникальное имя, так как на форме может быть не один такой компонент);
  • Свойство «Eneble» делает таймер доступным (если установлено в true) или наоборот — недоступным (если установлено в false);
  • Свойство «Interavl» задает интервал, через который будет периодически вызываться обработчик таймера.

Так же у компонента «Timer» есть два интересующих нас метода:

  • Start — запускает таймер (после вызова этого метода, будет периодически «срабатывать» обработчик таймера);
  • Stop — останавливает таймер (после вызова этого метода, обработчик таймера перестанет «срабатывать» ).

А вот и то самое событие «Tick»:

Событие (Tick) таймера

Событие (Tick) таймера

А теперь, давайте приступим к практике. Для наглядности, я решил написать программу часы. Конечно, полноценными часами эту программу назвать нельзя, но она будет показывать время. Причем, не всегда, а только когда мы запустим таймер, который будет «срабатывать» раз в секунду, и выводить текущее время в надпись на форме. Для запуска и остановки таймера будут использоваться две кнопки.

После того как я перенес все необходимые элементы на главную форму, она стала выглядеть так, как показано на рисунке ниже.

Главное окно программы

Главное окно программы

Как видите, программа максимально простая: две кнопки, да текстовая надпись. А теперь, давайте перейдем к коду. Я создал обработчики событий клика для каждой копки и события «Tick» таймера. Код приведен ниже:

//Обработчик нажатия на кнопку "Старт"
private void StartBtn_Click(object sender, EventArgs e)
{
    //Делаем таймер доступным
    MainTimer.Enabled = true;
    //Запускаем таймер
    MainTimer.Start();
}

//Обработчик нажатия на кнопку "Стоп"
private void StopBtn_Click(object sender, EventArgs e)
{
    //Останавливаем таймер
    MainTimer.Stop();
    //Снова делаем таймер недоступным
    MainTimer.Enabled = false;
 
    //"Сбрасываем" текст надписи в исходное состояние
    TimeLbl.Text = "Текущее время:";
}

//Обработчик таймера (вызывается с заданной периодичностью)
private void MainTimer_Tick(object sender, EventArgs e)
{
    //Раз в секунду будет выводиться такой текст (с текущим временем) 
    TimeLbl.Text = string.Format("Текущее время: {0}", DateTime.Now.ToString("HH:mm:ss"));
}

Всё довольно просто! А вот так будет выглядеть запущенная программа после нажатия на кнопку «Старт».

Программа с таймером

Программа с таймером

Конец!

Добавить комментарий