Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ProcessMessages [D6, D7, NT4, WinXP]


Страницы:   1 2 3 4 5

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 из доп. потока.


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо