Таймер — программный механизм, позволяющий через определенное время выполнять нужный нам участок кода, делая это заданное количество раз. Например, нам нужно запускать резервное копирование папки каждые 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, чтобы использовать его для выполнения необходимого вам функционала. Мы разобрали как вариант визуального программирования через управляющие элементы, так и случай программного вызова таймера в произвольном участке кода.
Закрепить приведенный материал можно на базе таких видео:
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…