Класс Timer в C#: все, что нужно знать новичку

Денис Бородовский

Таймер — программный механизм, позволяющий через определенное время выполнять нужный нам участок кода, делая это заданное количество раз. Например, нам нужно запускать резервное копирование папки каждые 10 минут или делать запись в файл журнала каждую секунду. В языке программирования C# есть все необходимые средства, чтобы реализовать такую логику. Не будем ходить вокруг да около, а сразу рассмотрим принцип работы такого механизма на реальном примере.

Содержание:

1. Визуальный режим использования таймера в С# (timer wpf c#)

2. Использование таймера во время выполнения программы в C#

3. Резюме

Визуальный режим использования таймера в С# (timer wpf c#)

Присутствующий в Windows Forms управляющий элемент «Таймер» (c# windows forms timer) можно перетащить в форму и задать его свойства. Давайте создадим приложение Windows, использующее таймер для записи текста в текстовый файл каждые 5 секунд. В нашем приложении Windows Forms есть две кнопки: «Пуск» и «Стоп». Программа будет записывать строку в текстовый файл каждую секунду после первоначального нажатия кнопки «Пуск». Приложение прекратит временные циклы записи в текстовый файл при нажатии кнопки «Стоп».

Шаг 1

Откроем Visual Studio и создадим приложение Windows Forms.

Шаг 2

Добавим в форму два элемента управления Button и назовем их Start и Stop, хотя имена вы можете написать любые, по своему усмотрению. Окончательная форма выглядит следующим образом:

C# таймерC# таймер

Шаг 3

Теперь давайте добавим в нашу программу элемент управления Timer. Перетащим его из Visual Studio Toolbox в форму. С помощью такой нехитрой манипуляции в нашей форме появится элемент – timer1.

Шаг 4

Теперь нам необходимо установить свойства нашего таймера. Для этого щелкнем правой кнопкой мыши на элементе управления «Timer» и откроем окно «Свойства». Здесь для вкладки Interval необходимо установить значение 1000, которое определяется в миллисекундах.

1 секунда = 1000 миллисекунд.

Шаг 5

Теперь нужно нажать кнопку Events и добавить обработчик событий Timer, дважды щелкнув по свойству Tick. Событие таймера здесь — timer1_Tick (как показано на изображении ниже).

Шаг 6

Теперь добавим классы FileStream и StreamWriter в начало нашей программы. Они используются для создания нового текстового файла и реализации записи данных в него. Все классы определены в библиотеке базовых классов System.IO, поэтому обязательно импортируйте System.IO в начале программы.

using System.IO; 
private static FileStream fs = new FileStream(@"c:\temp\mcb.txt", FileMode.OpenOrCreate, FileAccess.Write);    
private static StreamWriter m_streamWriter = new StreamWriter(fs);

Мы видим из предыдущего участка кода, что класс FileStream создает файл mcb.txt на диске C, а StreamWriter определен для записи в него данных. Теперь напишем алгоритм реализации записи нескольких строк в наш файл:

private void Form1_Load(object sender, System.EventArgs e){    
 // Write to the file using StreamWriter class    
  m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);    
  m_streamWriter.Write(" File Write Operation Starts : ");    
  m_streamWriter.WriteLine("{0} {1}",     
  DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());    
  m_streamWriter.WriteLine("===================================== \n");    
  m_streamWriter.Flush();    
} 

Далее настроим два обработчика регулирующих нажатие кнопок Start и Stop. В примере ниже, для кнопки «Пуск» устанавливаем значение свойства таймера Enabled = true. Теперь при нажатии на нее будет запускаться таймер, регулирующий выполнение события.

Ту же процедуру проделываем и с кнопкой STOP, только в этом случае свойству Enabled устанавливаем значение false для прекращения выполнения нашего события.

private void  button1_Click (  object sender, System.EventArgs e){    
    timer1.Enabled = true ;    
}    
private void  button2_Click (  object sender , System.EventArgs e){    
    timer1.Enabled = false ;    
}    

Остался последний шаг — создать событие timer1_Tick, записывающее текущую дату в текстовый файл:

private void  timer1_Tick (  object sender  , System.EventArgs e){    
  m_streamWriter.WriteLine ( "{0} {1}" ,     
  DateTime.Now.ToLongTimeString (), DateTime.Now.ToLongDateString ());    
  m_streamWriter.Flush ();    
}    

Шаг 7

Скомпилируем и запустим приложение. Затем нажмем кнопку «Пуск», чтобы начать запись в текстовый файл. Подождем примерно минуту, а затем нажмем кнопку «Стоп», чтобы остановить его работу. В выходном текстовом файле mcb.txt после всех манипуляций около 60 раз пропишется текущая дата и время. Это значит, что мы все сделали правильно.

Пример использования в C# класса Timer во время выполнения программы

Мы только что разобрали, как использовать таймер в начале разработки приложения с помощью визуального конструктора Visual Studio. Но  иногда вам может потребоваться программно использовать таймер во время выполнения этого приложения.

Класс Timer в C# представляет функции отложенного запуска событий во время выполнения программы.

Например: создадим такой таймер, установим ему необходимые свойства, а также добавим обработчик событий, интервал сделаем равным 2 секундам:

Timer timer1 = new Timer {    
        Interval = 2000
};    
timer1.Enabled =  true ;    
timer1.Tick + =  new System.EventHandler (OnTimerEvent);    

Допустим, мы хотим отобразить текст в элементе управления ListBox. Следующий код добавляет текст и обновляет ListBox каждые 2 секунды:

private void  OnTimerEvent (  object sender , EventArgs e){    
   listBox1.Items.Add (DateTime.Now.ToLongTimeString () +  ","  + DateTime.Now.ToLongDateString ());    
}    

Класс Timer также можно использовать, если вы хотите вызывать событие через заданный промежуток времени:

Timer timer1 = new Timer {    
    Interval = 5000    
};    
timer1.Enabled = true;    
timer1.Tick += new System.EventHandler(OnTimerEvent);

Событие в предыдущем примере будет запускаться каждые 5 секунд.

Резюме

Мы рассмотрели основные моменты работы с функцией таймера в C#, а также разобрались, как создать приложение Windows с элементами управления Timer, чтобы использовать его для выполнения необходимого вам функционала. Мы разобрали как вариант визуального программирования через управляющие элементы, так и случай программного вызова таймера в произвольном участке кода.

Закрепить приведенный материал можно на базе таких видео:

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024