Xpoint
   [напомнить пароль]

Сервис ест ресурсы сервера

Метки: [без меток]
2006-08-31 08:58:43 [обр] Майя(0/2)[досье]

Пишу сервис на Делфи
Код самый простой
flag:=True;
While not terminated do
begin

if (HourOf(time)=13) and (minuteOf(time)=13) and (secondof(time)=00) and flag then begin
    ShellExecute(h, 'open', 'c:\myprograms\testservice\p.exe', nil, nil, SW_SHOW);
    //WinExec('p.exe', SW_SHOW);
    flag:=False;
end;
    ServiceThread.ProcessRequests(False); //А вот тут уже нужно false, чтобы сервис не ждал сообщения.
  end;

При запуске, независимо от времени, загрузка процессора резко возрастает.
Почему?
Можно ли с этим как то бороться?

спустя 1 час 55 минут [обр] Я. Попов aka Jaded(0/191)[досье]
Майя[досье]: обязательно вставьте в цикл вызов функции =# ProcessMessages; #=. Это отдаст управление винде, когда Вашей программе оно (пока) уже не нужно..
спустя 24 минуты [обр] Алексей Севрюков(0/1280)[досье]
Майя[досье] Ну Вы хотя бы задержку в цикле поставили бы в одну секунду.
спустя 1 час 59 минут [обр] Я. Попов aka Jaded(0/191)[досье]
Майя[досье]: напишите, помогло ли ProcessMessages?
Да, ещё. Не вздумайте делать задержку через стандартную Delay(n). Это подвесит машину на время задержки. Делайте так: создайте пустое событие, и дождитесь его, установив тайм-аут равным значению задержки. Поскольку событие пустое, оно никогда не появится, а Вы получите задержку как раз на время тайм-аута. Этот метод оставляет винде ресурсы..
спустя 5 дней [обр] Майя(0/2)[досье]
Большое спасибо всем за советы!
Я сделала sleep(50), и наступило счастье.
Забыла про это совсем :(
Надо сказать что только в Делфи есть такая проблема с циклом, что он забирает управление себе и не отдает винде. Видимо у Дельфы высокий приоритет, выше чем у системы. Я когда то писала в Фоксе - там даже намека на такие баги не было. Цикл и цикл, работал себе спокойно.
спустя 3 часа 9 минут [обр] Я. Попов aka Jaded(0/191)[досье]

Майя[досье]: Delphi просто не пытается выполнять за Вас Вашу работу. На нём можно и критичные прерывания писАть, в отличие от Фокса. ;-)

Вообще-то, отдавать ресурсы сразу после использования - это как "Отче наш" при программировании в Мастдае.

Powered by POEM™ Engine Copyright © 2002-2005