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

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

Отслеживание события из функции.


Страницы:   1 2 3

MasterVovan ©   (2005-11-30 15:28:00) 

Здравствуйте!
Как сделать так, чтобы остановить работу функции до тех пор, пока не произойдет событие какого либо компонента, затем продолжить выполнение этой функции?
Заранее спасибо!
С уважением!


Набережных С.   (2005-11-30 20:35:00) [21]

Callback?
Или в функции запустить метод компонента  и ждать эвента, который компонент установит по событию. Или, как уже сказал alex_*** ©, метод запускать в доп.потоке, если ему требуется цикл выборки сообщений - чтобы не мешать работе хоста.

В общем, надо знать, как работает компонент.


MasterVovan   (2005-11-30 20:04:00) [22]

2alex_***:
блокирование основного приложения происходит на 1 секунду максимум, ибо процесс поиска mx записей не долог... Просто когда ипользую видимую форму, тогда это окно мигнет на 1 секунду не прочитать на ней ничего и не понять что это... Ощущение что глюк, который вылез, а я его отловил и закрыл, чтоб никто не понял... А мне это начальству нести и в глаза смотреть...


alex_***   (2005-11-30 19:54:00) [23]

ну вы блин даете... невидимую модальную форму. ЧТоб заблокировать экран? Честно извратами не занимался никогда. и желания даже нет. За них мне деньги не платят ;)


MasterVovan   (2005-11-30 19:49:00) [24]

2alex_***:
к сожалению, очень... возможен вариант с формой, которую буду открывать модально (как было в самом начале и работало), но как тогда сделать чтоб ее на экране небыло и кнопок внизу никаких не появлялось? какуюнибудь виртуальную форму надо, невидимую... =)


alex_***   (2005-11-30 19:25:00) [25]

компонент-то будет находится в основном потоке, вот где ты будешь с ожиданием находится, это вопрос... Тебе это действительно нужно? Может без этого? Потоки это не так просто


MasterVovan   (2005-11-30 19:16:00) [26]

2alex_***:
Как организовать поток, в котором будет находиться этот компонент со своими событиями?


alex_***   (2005-11-30 18:52:00) [27]

я думаю чтоб ловить события, надо на них подписаться - обработчик свой впихнуть куда-ть. Можно у формы или у нужных компонентов перекрыть WndProc. Вот вопрос: как ты хотел ждать и одновременно чтоб какой-то компонент работал-генерил события? Отдельный поток только если


MasterVovan   (2005-11-30 18:04:00) [28]

2Reindeer Moss Eater:
Можно и так сказать... просто перепробовав тучу вариантов я уже не гнушаюсь заведомо не рабочими, как говорится "а мало ли"...


Reindeer Moss Eater   (2005-11-30 17:53:00) [29]

А ты конечно же ждал чуда, смотря на этот код?


MasterVovan   (2005-11-30 17:45:00) [30]

2ANB:
как и ожидалось при таком варианте:
while флаг do
begin
Sleep(50);
end;

все зависает в вечном цикле...


MasterVovan   (2005-11-30 17:34:00) [31]

2ANB:
> А зачем эту функцию в ДЛЛ то пихать ?
Просто есть набор программ, которые будут использовать данную функцию, не охота в каждую прописывать ее...

> Если из ДЛЛ, то Application лучше не использовать.
while флаг do
begin
 Sleep(50);
end;

так оно будет?

> Если не хочешь, чтобы основное приложение подвисало - тогда выноси вызов функции в отдельный поток.
это то понятно, но не принципиально...


ANB   (2005-11-30 17:12:00) [32]


> MasterVovan   (30.11.05 16:56) [11]

Если из ДЛЛ, то Application лучше не использовать. Тогда только sleep. Если не хочешь, чтобы основное приложение подвисало - тогда выноси вызов функции в отдельный поток. А зачем эту функцию в ДЛЛ то пихать ?


MasterVovan   (2005-11-30 16:56:00) [33]

2DiamondShark:
в том то и дело что нельзя... функцию вызывает из длл приложение, и если ее завершить то приложение ответа от других уже не получит....


DiamondShark   (2005-11-30 16:53:00) [34]

Разбить функцию на две.
Вызвать первую.
Дождаться события.
Вызвать вторую.


MasterVovan   (2005-11-30 16:49:00) [35]

2Владислав:
Я так понял что да...


Владислав   (2005-11-30 16:20:00) [36]


> Для определения этого релэя запускаю метод компонента DNS-
> ресолвинга. По окончанию ресолвинга происходит событие OnRequestDone


"метод компонента DNS- ресолвинга" выполняется асинхронно?


MasterVovan   (2005-11-30 16:14:00) [37]

Снова вопрос... Почитал про TDataModule но так и не понял, как его применить в моем случае... Как его можно запустить так, чтоб он как модальная форма приостанавливал выполнение функции до выхода из него?


MasterVovan   (2005-11-30 16:02:00) [38]

2Владислав:
хм... =) не слышал о таком чуде еще пока... но глянув в хелп, понял, что это может быть то что надо... надо только разобраться как его использовать на мое благо... =) Не имеется ли случаянно каких нить примерчиков?


Владислав   (2005-11-30 15:52:00) [39]

TDataModule?


MasterVovan   (2005-11-30 15:51:00) [40]

2ANB:
интересный вариант... попробую... но че-то как-то не очень мне нравится... =)
А какие нибудь еще есть способы решения? Пробовал уже на форму пихать этот компонент, все работает, но не знаю как форму скрыть... =)


Страницы:   1 2 3

Наверх

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