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

Вниз

Synchronize   Найти похожие ветки 

 
TUser ©   (2004-03-03 20:27) [0]

Растолкуйте мне, plz, как работает Synchronize. В ТП написано, что он создает в основном потоке невидимое окно и посылает ему сообщение, в параметрах которого передает ссылку на Self, т.е. на свой объект. Не понятно следующее - это невидимое окошко должно потом вызвать метод объекта, хранимый в FMethod. Но этот самый FMethod - он private. Как может окно в контексте основного потока, которое к данному экземпляру TThread не имеет никакого отношения и описано в другом модуле вызываеть private метод.


 
Romkin ©   (2004-03-03 20:48) [1]

Delphi 5? В шестой версии немного по-другому. Окно описано в том же модуле classes и поэтому вполне может обращаться к секции private


 
TUser ©   (2004-03-03 21:42) [2]

Книга у меня по Delphi5. Сам работаю на 7. Но наверное так и есть. Забавно, что Borland пишет свои коды с помощью такого "полузаконного" приема.


 
Verg ©   (2004-03-03 21:59) [3]

Ну, ну...
Стразу уж и полузаконными.
Все законно, абсолютно. Мало того, я считаю, что до D6 все еще и достаточно красиво :)

Private, public или published у методов не имеет ровно никакого отношения к контексту потока в котором они будут выполнятся.

А окно это? При чем оно тут?
Обработчик сообщения этого окна описан в том же модуле, что и класс TThread, полем которого и является FMethod, который он (обработчик) и вызывает.
В чем сомнение?


 
Verg ©   (2004-03-03 22:13) [4]


> В ТП написано, что он создает в основном потоке невидимое
> окно и посылает ему сообщение, в параметрах которого передает
> ссылку на Self, т.е.


И вот еще.
Он? Кто он? Synchronize ничего не создает.
Это окошко создается первым попавшимся конструктором TThread, а так как, принято считать, что первый же доп. поток класса TThread создается только главным, то и окно будет принадлежностью этого главного потока.
На чем, собственно, весь "фокус" данного способа синхронизации и состоит.



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

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

Наверх




Память: 0.47 MB
Время: 0.035 c
3-43390
uu
2004-02-13 20:30
2004.03.14
CREATE GENERATOR


3-43321
Barmaglot
2004-02-17 12:55
2004.03.14
Проблема с выводом таблиц в QReport......


1-43585
yaric
2004-02-27 14:20
2004.03.14
Создание новой страницы PageControl?


8-43684
exciter__
2003-11-13 06:02
2004.03.14
WinAPI функция PlaySound не для WAV а для MIDI.


1-43578
Ш-К
2004-02-27 15:20
2004.03.14
Как из события передать указатель на объект в мой обработчик?