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

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

как отменить выполнение обработчика?


Страницы:   1 2

Delphist2 ©   (2010-04-06 06:14:00) 

Есть кнопка, ее обработчик может выполняться долго. Как добавить возможность отмены выполнения?
Если долго выполняется метод adocommand.execute, то как можно отменить его, не дожидаясь результата запроса?


И. Павел   (2010-04-06 10:13:00) [21]

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


Delphist2   (2010-04-06 09:53:00) [22]

А если надо прибить сразу весь обработчик (не обязательно этот а вообще), то это же надо в поток его оформлять, без потоков в таком случае никак?


Delphist2   (2010-04-06 09:43:00) [23]


> причина из-за чего отменяешь

Ну там причина это удобство пользователя. Пользователь неправильно ввел параметры, запустил запрос, обнаружил что парамеры не те и не дожидаясь результатов перезапустил с др. параметрами.


sniknik   (2010-04-06 09:18:00) [24]

> Ну допустим поставлю, а как отменить?
ну допустим почитаешь справку.

> В каком смысле не понадобится?
а в каком смысле она тебе нужна? причина из-за чего отменяешь. так вот эта причина может исчезнуть при переделке логики (это не просто "поставлю") на асинхронность.


MsGuns   (2010-04-06 09:14:00) [25]

>Delphist2   (06.04.10 09:04) [3]
>Асинхронно - это eoAsyncExecute? Ну допустим поставлю, а как отменить?

TADOCommand.Cancel

>> сделать асинхронно, то возможно не понадобится отмена...
>В каком смысле не понадобится?

В таком, что приложение не будет "висеть" и юзер, дожидаясь завершения операции, может делать что-то полезное


Delphist2   (2010-04-06 09:04:00) [26]

Асинхронно - это eoAsyncExecute? Ну допустим поставлю, а как отменить?

> сделать асинхронно, то возможно не понадобится отмена...
>  

В каком смысле не понадобится?


И. Павел   (2010-04-06 07:55:00) [27]

Может быть просто поставить таймаут?


sniknik   (2010-04-06 07:50:00) [28]

> Если долго выполняется метод adocommand.execute, то как можно отменить его
отменить можно только асинхронное выполнение (при синхронном отмену попросту неоткуда сделать). с другой стороны, если сделать асинхронно, то возможно не понадобится отмена... и уж точно отменять нужно будет не "обработчик кнопки которая есть".

> Как добавить возможность отмены выполнения?
сделать еще одну кнопку и вставить отмену в ее обработчик?


Страницы:   1 2

Наверх

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