Как лучше запустить метод в определенное время?

У меня есть приложение Windows Form, которое неоднократно вызывает метод через некоторое время. поэтому меня беспокоит использование ЦП. Я знаю два способа сделать это:

1) Использование компонента Timer
2) callThread.Sleep(time) в цикле

Итак, какой из них лучше? Какой из них использует ЦП меньше или не использует ЦП?


person Hamed    schedule 07.08.2012    source источник
comment
Возможный дубликат C# Timer или Thread.Sleep   -  person George Karanikas    schedule 08.08.2012
comment
Использование Thread.Sleep в производственном коде — всегда плохая идея.   -  person Lukasz Madon    schedule 08.08.2012


Ответы (2)


Это не имеет значения, потому что даже если вы установите цикл на 1 мс, вы не сможете измерить загрузку ЦП. Это было бы так низко.

Из соображений надежности, ремонтопригодности и удобочитаемости вы должны использовать файл System.Windows.Forms.Timer.

person usr    schedule 07.08.2012

Если вы хотите периодически выполнять определенный блок кода в определенное время, используйте таймеры, для которых он предназначен. Небольшое знание архитектуры ЦП показывает, что существуют таймеры общего назначения, которые не потребляют ресурсов процессора или ОС для создания точных временных задержек.

С другой стороны, поддержание потока в приостановленном состоянии и переключение его на выполнение и постановка его в очередь готовности будут потреблять ресурсы ЦП и ОС.

person Mahmoud Fayez    schedule 07.08.2012