Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
4-43955
TURKDL
2004-01-06 15:12
2004.03.14
Tray


1-43546
Тимохов
2004-01-23 13:14
2004.03.14
Я, похоже, первый!!! Вопрос про округление.


3-43288
tv
2004-02-12 12:24
2004.03.14
Unicode строки в поле типа Memo


3-43304
MadGhost
2004-02-11 22:42
2004.03.14
драйвер, для работы с базой данных, в текстовом файле?


1-43516
Ultr
2004-02-22 00:14
2004.03.14
Создание файла с заданным размером




   Наверх