Главная страница
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.011 c
1-85022
Schummi
2002-07-30 08:41
2002.08.26
про TSplitter...


3-84896
ziper
2002-08-06 12:43
2002.08.26
Проблемы с с озданием *.dbf


1-84989
maxim2
2002-08-14 09:27
2002.08.26
Как нарисовать точку на форме опр. цветом и в опр. координатах


6-85149
Kr_Alex
2002-06-17 10:28
2002.08.26
Internet connection


1-85127
Mind
2002-08-14 19:47
2002.08.26
Выделить ячейку в StringGrid