Недавно я создал службу, использующую один поток для периодической обработки информации. Служба была создана с использованием Microsoft Visual Studio 2010 Express. Я заметил, что загрузка процессора взлетела на Луну (загрузка процессора на 100%).Использование CPU становится очень высоким во время выполнения
Позже, из любопытства, я построил очень маленькую программу, в которой все, что она делает, запускает небольшую нить или таймер, а затем запускает невероятно длинный цикл. Я также переключился с создания консольного приложения на приложение Windows Form. Я смог уменьшить свою проблему, переключив тип программы на сборку.
Я попытался понижая приоритет потока:
System.Threading.Thread.CurrentThread.Priority = ThreadPriority.Lowest;
Я также попытался установить класс приоритета
Process p = Process.GetCurrentProcess();
p.PriorityClass = ProcessPriorityClass.BelowNormal;
Я также думал, что использование процессора, возможно, было высокая из-за работы на виртуальной машине. Но эта теория никуда меня не привела. Это довольно смешно. Я не знаю, куда еще повернуть. Я не уверен, почему запуск таймера или потока отправил бы мое использование ЦП через потолок так же, как в .NET Framework. Я никогда не испытывал этого при создании COM-объектов. Есть ли у кого-нибудь яркие идеи о том, куда я могу обратиться?
Спасибо за ваше время заранее.
The Thread.Sleep (1000) помог мне разобраться во всем. Реальная программа несколько сложна. Это часть очень маленькой программы, которую я написал: System.Threading.Thread th = new System.Threading.Thread (новый ThreadStart (ThreadFunc)); th.Priority = ThreadPriority.Lowest; th.Start(); public static void ThreadFunc() { System.Threading.Thread.Sleep (10000); или (long i = 0; i <1000000000; i ++) {} System.Threading.Thread.Sleep (10000); } –
Целью исходной программы было обработку информации, но она должна выполняться часто (например, 1/2 часа или один час). Я вижу, что Планировщик Windows позволяет мне планировать задачу только так часто, как ежедневно. Я думал, что буду использовать поток, чтобы отслеживать расписание, но я начинаю понимать, что это не очень умно. Поэтому я открыт для предложений. –
Я думаю, что я могу развернуться и использовать планировщик задач Windows вместо того, чтобы пытаться сделать что-то свое и использовать потоки и таймеры, чтобы моя программа была легкой. Спасибо, ребята, и хорошо выглядите. –