«Таймер» потребляет больше мощности процессора?

#c# #timer #cpu-usage

#c# #таймер #загрузка процессора

Вопрос:

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

Я создал приложение (C #) и использовал ‘timer tick’ для выполнения ‘трех’ инструкций за 1000 миллисекунд (1 сек), и я заметил, что через 5 минут приложение потребляло 5% мощности процессора и 10% через 10 минут.

Если этот прогресс остается постоянным, то что произойдет через 4-5 часов, если я запущу свое приложение в фоновом режиме?

Должен ли я избегать чрезмерного использования таймера?

 private void currentTime_Tick(object sender, EventArgs e)
{
   label1.Text = DateTime.Now.ToString("HH:mm:ss tt");
   label2.Text = dt.AddSeconds(i).ToString("HH:mm:ss");
   i  ;
}
 

Комментарии:

1. Я не думаю, что это связано с использованием таймера. В вашем коде должно быть что-то

2. Вы уверены, что это таймер, а не другой код? Возможно, ссылки, которые не очищаются, или объекты, содержащие все больше и больше данных?

3. Если бы вы могли показать нам свой код, мы могли бы проанализировать, что происходит. Существует три вида таймеров, и все они ведут себя немного по-разному 🙂 это и все, что вы делаете в своем обработчике событий, может иметь большое значение.

4. Вы могли бы описать то, что вы делаете, немного подробнее.

5. Это не тот код, который отвечает за использование вашего процессора.

Ответ №1:

Мне кажется, что причиной является не сам таймер, а любые вызываемые им инструкции. Вы создаете объекты в этих ваших инструкциях или вызываете что-то, что выполняется в отдельном потоке? Запуск потоков или выделение ресурсов и забывание их закрыть, безусловно, могут привести к описанному вами поведению.

Комментарии:

1. В первых двух инструкциях я изменяю «текст (ы)» двух «меток», а третья инструкция увеличивает значение «double».

2. Если некоторые из этих меток не имеют активных событий OnChanged () или аналогичных событий, проблема не должна быть в этой части кода. Вы пытались изолировать проблему? Что происходит, когда вы закомментируете все внутри своего «таймера»? Что произойдет, если вы установите интервал таймера в 10 раз медленнее или вообще не запускаете его?