#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 раз медленнее или вообще не запускаете его?