Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.26;
Скачать: CL | DM;

Вниз

PeekMessage & GetMessage   Найти похожие ветки 

 
KPV-10k ©   (2002-05-24 21:36) [0]

Люди! Есть такая проблема: при запуске моей программы под ядром NT она начинает "пожирать" ресурсы системы... таким образом, что с каждой секундой она на это величину времени увеличивает квант времени выделяемый процессу, таким образом всё это приводит к тому, что остальные процессы не обрабатываются...

Вот ядро моего проекта:


while GetMessage(Msg, HInstance, 0, 0) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;


В справке, нашел, что это баг и там есть такой код:

// This PeekMessage loop will NOT let the system go idle.
for( ;; )
{
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (msg.message == WM_QUIT)
return TRUE;

TranslateMessage(&msg);
DispatchMessage(&msg);
}
BackgroundProcessing();
}


Короче, на Делфи перевел его так:

while true do begin
while PeekMessage(Msg, HInstance, 0, 0, PM_REMOVE) do
begin
if msg.message = WM_QUIT then ExitProcess(ExitCode);
TranslateMessage(msg);
DispatchMessage(msg);
WaitMessage();
end;
//BackgroundProcessing(); <-НО ЭТОЙ Ф-ЦИИ НЕТ!!!
end;


Вот я и спрашиваю: как можно сделать правильный обработчик событий? Чтобы рульно работало...


 
Ales ©   (2002-06-21 08:35) [1]

Не уверен, но вроде так (это для сервиса !!!):

while not Terminated do begin
while PeekMessage
....
end;
ServiceThread.ProcessRequests(True);
end; /// end while true




 
Юрий Зотов ©   (2002-06-21 13:32) [2]

Использую тот же самый цикл с GetMessage(Msg, 0, 0, 0).
Ничего лишнего не жрет. А почему HInstance? Это же хэндл модуля, а не окна. И в PeekMessage то же самое.


 
Игорь Шевченко ©   (2002-06-21 14:11) [3]

В таком виде (GetMessage(Msg, HInstance, 0, 0)), по идее вообще ничего не должно придти, так как сообщений с HWND=HInstance у потока, очевидно, нет).
Странно все это :-)



Страницы: 1 вся ветка

Текущий архив: 2002.08.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-85014
soware
2002-08-16 07:07
2002.08.26
Отчеты в QR


8-85135
annton
2002-04-20 00:49
2002.08.26
Глюк TImage


1-85018
cult
2002-08-16 11:26
2002.08.26
Проблемы с ВинКонтролом.


14-85232
V.exeR
2002-08-01 00:41
2002.08.26
На тему работы


1-85044
Andrey Shakula
2002-08-14 11:06
2002.08.26
dsgnintf.pas