Класс 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, хотя имена вы можете написать любые, по своему усмотрению. Окончательная форма выглядит следующим образом:

Шаг 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, чтобы использовать его для выполнения необходимого вам функционала. Мы разобрали как вариант визуального программирования через управляющие элементы, так и случай программного вызова таймера в произвольном участке кода.

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023