Таймер — программный механизм, позволяющий через определенное время выполнять нужный нам участок кода, делая это заданное количество раз. Например, нам нужно запускать резервное копирование папки каждые 10 минут или делать запись в файл журнала каждую секунду. В языке программирования C# есть все необходимые средства, чтобы реализовать такую логику. Не будем ходить вокруг да около, а сразу рассмотрим принцип работы такого механизма на реальном примере.
Содержание:
1. Визуальный режим использования таймера в С# (timer wpf c#)
2. Использование таймера во время выполнения программы в C#
Присутствующий в Windows Forms управляющий элемент «Таймер» (c# windows forms timer
) можно перетащить в форму и задать его свойства. Давайте создадим приложение Windows, использующее таймер для записи текста в текстовый файл каждые 5 секунд. В нашем приложении Windows Forms есть две кнопки: «Пуск» и «Стоп». Программа будет записывать строку в текстовый файл каждую секунду после первоначального нажатия кнопки «Пуск». Приложение прекратит временные циклы записи в текстовый файл при нажатии кнопки «Стоп».
Откроем Visual Studio и создадим приложение Windows Forms.
Добавим в форму два элемента управления Button
и назовем их Start
и Stop
, хотя имена вы можете написать любые, по своему усмотрению. Окончательная форма выглядит следующим образом:
Теперь давайте добавим в нашу программу элемент управления Timer
. Перетащим его из Visual Studio Toolbox в форму. С помощью такой нехитрой манипуляции в нашей форме появится элемент – timer1
.
Теперь нам необходимо установить свойства нашего таймера. Для этого щелкнем правой кнопкой мыши на элементе управления «Timer
» и откроем окно «Свойства». Здесь для вкладки Interval
необходимо установить значение 1000, которое определяется в миллисекундах.
1 секунда = 1000 миллисекунд.
Теперь нужно нажать кнопку Events
и добавить обработчик событий Timer
, дважды щелкнув по свойству Tick
. Событие таймера здесь — timer1_Tick
(как показано на изображении ниже).
Теперь добавим классы 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 (); }
Скомпилируем и запустим приложение. Затем нажмем кнопку «Пуск», чтобы начать запись в текстовый файл. Подождем примерно минуту, а затем нажмем кнопку «Стоп», чтобы остановить его работу. В выходном текстовом файле mcb.txt
после всех манипуляций около 60 раз пропишется текущая дата и время. Это значит, что мы все сделали правильно.
Мы только что разобрали, как использовать таймер в начале разработки приложения с помощью визуального конструктора 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), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…