![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ProcessMessages [D6, D7, NT4, WinXP]
dmirror © (2006-10-31 14:08:00)В чистом приложении вызов Application.processmessages работает.
Создаю поток
type
TServiceThread = class(TThread)
public
procedure Execute; override;
end;
---
var
ServiceThread: TServiceThread;
и на processmessages компилятор начинает ругаться что не видит такой функции.
что может быть и как исправить?
Eraser (2006-10-31 16:47:00) [81]> [9] Игорь Шевченко © (31.10.06 16:44)
в том то и дело что никаким.
Игорь Шевченко (2006-10-31 16:44:00) [82]Eraser © (31.10.06 16:13) [7]
> Нельзя вызывать, потому что ProcessMessages позволяет перейти
> к обработке всей очереди сообщений основного потока приложения,
> тем самым прервав выполнение кода в основном же потоке,
> до тех пор, пока метод ProcessMessages не выполнится.
С этого момента подробнее - каким образом ProcessMessages вызыванный из неосновного потока позволяет перейти к обработке всей очереди сообщений основного потока приложения.
Сергей М. (2006-10-31 16:17:00) [83]
> YuRock © (31.10.06 15:55) [3]
> Почему?
Дурацкий вопрос.
Ну, если желаешь ответ на него, то хотя бы потому что поле TApplication.FTerminate не защищено крит.секцией. И при этом нет никаких гарантий, что потоку не послано WM_QUIT.
Смотреть и изучать исходники класса TApplication до полного просветления)
Eraser (2006-10-31 16:13:00) [84]> [3] YuRock © (31.10.06 15:55)
> Почему?
Зачем?
Зачем понадобилось вызывать ProcessMessages в доп. потоке?
Нельзя вызывать, потому что ProcessMessages позволяет перейти к обработке всей очереди сообщений основногопотока приложения, тем самым прервав выполнение кода в основномже потоке, до тех пор, пока метод ProcessMessages не выполнится.
Если вызвать ProcessMessages из доп. потока, то программа или этот поток, в лучшем случае, скорее всего подвиснут.
Ketmar (2006-10-31 16:10:00) [85]>[5] YuRock(c) 31-Oct-2006, 16:05
ещё один надмозг. сезон, что ли? игнор.
YuRock (2006-10-31 16:05:00) [86]
> поверь на слово пока. ибо это с 1917 года надо про шпингалеты
> пояснять.
Хорошо. Я тогда тоже дам совет. Не пользуйся никогда компонентом TButton. Почему? Поверь на слово - я знаю, почему...
Ketmar (2006-10-31 16:02:00) [87]>[3] YuRock(c) 31-Oct-2006, 15:55
>Почему?
поверь на слово пока. ибо это с 1917 года надо про шпингалеты пояснять.
YuRock (2006-10-31 15:55:00) [88]
> Eraser © (31.10.06 14:13) [1]
>
> ЗЫ
> не вздумай вызывать processmessages из доп. потока.
>
Почему?
Сергей М. (2006-10-31 14:14:00) [89]processmessages - это не функция, а процедурный метод объекта класса TApplication.
Eraser (2006-10-31 14:13:00) [90]> [0] dmirror (31.10.06 14:08)
> и на processmessages компилятор начинает ругаться что не
> видит такой функции.
код показываей, где ругается.
ЗЫ
не вздумай вызывать processmessages из доп. потока.