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

Вниз

Каково максимально-гарантированное время доставки message?   Найти похожие ветки 

 
Ega23 ©   (2004-01-06 14:29) [0]

Ситуация следующая.

1. Есть некий класс TDialogPanel. Суть его такова, что по собственному языку он строит динамические диалоги с разным набором контролов. Например, в одном случае это 2 TEdit"а, в другом - TEdit, TComboBox и TCheckBox и т.п. По событию OnExit каждого из контролов генерируется собственный message и отправляется по MainForm.Handle.
2. В главной форме в обработчике этого message происходит попытка обращения к отправителю за какой-то информацией.
3. Опять же в главной форме имеется TTreeView, передвигаясь по узлам которого убивается старый объект класса TDialogPanel и создаётся новый.

Какова вероятность того, что в обработчике события я буду обращаться к уже "убитому" объекту класса?


 
Юрий Федоров ©   (2004-01-06 14:39) [1]

Как отравляется сообщение
если SendMessage - вероятность нулевая, так как это аналогично
вызову метода - управление будет передно немедленно

если PostMessage - сообщение встанет в конец очереди сообщений окна и будет отработно только тогда, когда все предыдущие будут отработаны.


 
Ega23 ©   (2004-01-06 14:42) [2]


> если SendMessage - вероятность нулевая, так как это аналогично
> вызову метода - управление будет передно немедленно

Т.е., как я понимаю, сообщение сгенерили через SendMessage, мгновенно провалились в обработчик события, вернулись обратно - и объект "убился", так?


 
Романов Р.В. ©   (2004-01-06 14:44) [3]

Если сообщения посылаешь через SendMessage или Perform, то будет выполнятся обработка сообщений, а потом продолжится выполнение программы со следующей строки.
Если сообщения посылаешь через PostMessage обработка сообщения будет после выхода из процедуры, когда приложеие начнет обрабатывать очередь сообщений. Вероятность обращения к убитому объекту в этом случае очень велика.


 
Романов Р.В. ©   (2004-01-06 14:46) [4]


> вернулись обратно - и объект "убился", так?

Сам он не убъется его убивать нужно. А суть ты понял равильно


 
Ega23 ©   (2004-01-06 14:56) [5]

Хорошо, сейчас попробую. Я через Post делал.
А Event сдесь помочь может?


 
Романов Р.В. ©   (2004-01-06 15:04) [6]

А Event тут причем?
Не путай сообщения с событиями.


 
Ega23 ©   (2004-01-06 15:09) [7]

Всем спасибо за советы, всё замечательно заработало.



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
3-49422
BoxTer
2003-12-19 06:34
2004.01.16
Перенос строк в DBGrid


3-49470
ВК
2003-12-21 00:51
2004.01.16
Как получить индекс самой последней записи в таблице при использо


1-49570
raining day
2004-01-05 21:07
2004.01.16
Не могу нормально записать инфу в реестр


1-49640
Denis group
2004-01-03 16:36
2004.01.16
Удалять файлы в корзину без ошибок и тормозов.


1-49577
Ega23
2004-01-06 14:29
2004.01.16
Каково максимально-гарантированное время доставки message?