Текущий архив: 2006.10.22;
Скачать: CL | DM;
Вниз
Создание нити и отправка ей сообщения. Найти похожие ветки
← →
Игорь_ (2006-10-04 17:39) [0]Здравствуйте !
Пробую дождатся когда нить примет сообщение:
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;
А как узнать, что пора прекращать цикл отправки сообщений ?
Может нить там зависа и не реагирует ?
← →
Leonid Troyanovsky © (2006-10-04 17:43) [1]
> Игорь_ (04.10.06 17:39)
> Пробую дождатся когда нить примет сообщение:
Для того, чтобы дождаться окончания обработки
нитью посланного сообщения нужно снабдить нить окном.
Ну, и посылать, соо-сно, окну путем SendMessage.
--
Regards, LVT.
← →
MsGuns © (2006-10-04 17:53) [2]Если нить без собственного окна, то обмен сообщениями можно реализовать через некий объект (типа record), созданный основным потоком. Перед созданием и запуском вторичного первичный создает эту запись, помещает туда нужную информацию и создает вторичный поток, передавая ему указатель на этот объект. Вторичный поток может "опрашивать" посылаемые первичным потоком "сигналы", просто проверяя содержимое объекта обраящаясь к нему через переданный указатель.
Ответы вторичный поток также может посылать "инициатору" через поля объекта напрямую или используя метод Sinchronize
← →
Игорь_ (2006-10-04 18:01) [3]Мне не надо ждать конца работы нити. Я хочу, просто, быть уверенным,
что она получила мое сообщение и спокойно идти дальше,
а ноа пусть своими делами занимается :))
← →
Ketmar © (2006-10-04 18:02) [4]пусть дёргает Event, например. %-)
← →
Leonid Troyanovsky © (2006-10-04 18:05) [5]
> Игорь_ (04.10.06 18:01) [3]
> что она получила мое сообщение и спокойно идти дальше,
Win32Check(PostMessage())
--
Regards, LVT.
← →
Leonid Troyanovsky © (2006-10-04 18:16) [6]
> Leonid Troyanovsky © (04.10.06 18:05) [5]
> > что она получила мое сообщение и спокойно идти дальше,
А.. Sorry.
Видимо, имелось ввиду тот момент, когда поток будет готов
к приему сообщений.
Ну, в этом случае, дейс-но, нужен event [4].
Кстати, в такой архитектуре не нужен и цикл обработки сообщений.
Т.е., вторичному потоку не нужно быть GUI thread,
достаточно одних events.
--
Regards, LVT.
← →
Игорь_ (2006-10-04 18:18) [7]Спасибо Большое !
Страницы: 1 вся ветка
Текущий архив: 2006.10.22;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.029 c