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

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

Создание нити и отправка ей сообщения.


Игорь_ ©   (2006-10-04 17:39:00) 

Здравствуйте !
Пробую дождатся когда нить примет сообщение:
hThread:=BeginThread(nil, 0, @TestThread, pParam, 0, ThreadID);
_OK:=PostThreadMessage(ThreadId, MY_MESSAGE, MY_LPARAM, LParam(pParam));
while not _OK do
 begin
  Sleep(0);
  _OK:=PostThreadMessage(ThreadId, MY_MESSAGE, MY_LPARAM, LParam(pParam));
 end;
А как узнать, что пора прекращать цикл отправки сообщений ?
Может нить там зависа и не реагирует ?


Игорь_   (2006-10-04 18:18:00) [1]

Спасибо Большое !


Leonid Troyanovsky   (2006-10-04 18:16:00) [2]


> Leonid Troyanovsky ©   (04.10.06 18:05) [5]

> > что она получила мое сообщение и спокойно идти дальше,


А.. Sorry.

Видимо, имелось ввиду тот момент, когда поток будет готов
к приему сообщений.

Ну, в этом случае, дейс-но, нужен event [4].
Кстати, в такой архитектуре не нужен и цикл обработки сообщений.
Т.е., вторичному потоку не нужно быть GUI thread,
достаточно одних events.

--
Regards, LVT.


Leonid Troyanovsky   (2006-10-04 18:05:00) [3]


> Игорь_   (04.10.06 18:01) [3]

> что она получила мое сообщение и спокойно идти дальше,


Win32Check(PostMessage())

--
Regards, LVT.


Ketmar   (2006-10-04 18:02:00) [4]

пусть дёргает Event, например. %-)


Игорь_   (2006-10-04 18:01:00) [5]

Мне не надо ждать конца работы нити. Я хочу, просто, быть уверенным,
что она получила мое сообщение и спокойно идти дальше,
а ноа пусть своими делами занимается :))


MsGuns   (2006-10-04 17:53:00) [6]

Если нить без собственного окна, то обмен сообщениями можно реализовать через некий объект (типа record), созданный основным потоком. Перед созданием и запуском вторичного первичный создает эту запись, помещает туда нужную информацию и создает вторичный поток, передавая ему указатель на этот объект. Вторичный поток  может "опрашивать" посылаемые первичным потоком "сигналы", просто проверяя содержимое объекта обраящаясь к нему через переданный указатель.
Ответы вторичный поток также может посылать "инициатору" через поля объекта напрямую или используя метод Sinchronize


Leonid Troyanovsky   (2006-10-04 17:43:00) [7]


> Игорь_   (04.10.06 17:39)  

> Пробую дождатся когда нить примет сообщение:


Для того, чтобы дождаться окончания обработки
нитью посланного сообщения нужно снабдить нить окном.
Ну, и посылать, соо-сно, окну путем SendMessage.

--
Regards, LVT.


Наверх

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