Одним из важнейших классов, находящихся в пространстве имени System.Threading, является класс Timer. Данный класс позволяет запускать определенные действия по истечению некоторого периода времени.
Например, нам надо запускать какой-нибудь метод через каждые 2000 миллисекунд, то есть раз в две секунды:
class Program { static void Main(string[] args) { int num = 0; // устанавливаем метод обратного вызова TimerCallback tm = new TimerCallback(Count); // создаем таймер Timer timer = new Timer(tm, num, 0, 2000); Console.ReadLine(); } public static void Count(object obj) { int x = (int)obj; for (int i = 1; i < 9; i++, x++) { Console.WriteLine($"{x * i}"); } } }
Первым делом создается объект делегата TimerCallback, который в качестве параметра принимает метод. Причем данный метод должен в качестве параметра
принимать объект типа object
.
И затем создается таймер. Данная перегрузка конструктора таймера принимает четыре параметра:
объект делегата TimerCallback
объект, передаваемый в качестве параметра в метод Count
количество миллисекунд, через которое таймер будет запускаться. В данном случае таймер будет запускать немедленно после создания, так как в качестве значения используется 0
интервал между вызовами метода Count
И, таким образом, после запуска программы каждые две секунды будет срабатывать метод Count.
Если бы нам не надо было бы использовать параметр obj у метода Count, то при создании таймера мы могли бы указывать в качестве соответствующего параметра
знаечние null
: Timer timer = new Timer(tm, null, 0, 2000);