|
Платные хостинги
Раскрутка сайта
Книги по программированию
Требуется досрочно прервать запрос SELECT, Вопрос прерывания запроса.
- Из Delphi через ADOQuery запускаю запрос SELECT к SQL Server'у. Запрос выполняется долго (2-3 минуты), при этом интерфейс пользователя блокируется до окончания выполнения запроса. Как организовать кнопку "Прервать", чтобы пользователь в любой момент мог прервать выполнение запроса ?
- Поставить выполнение квери в поток - TThreadМожно попробовать обновление интерфейса по таймеру, но у меня большие сомнения, что это будет работать.
- Да.... это поганка....одними средствами дельфи, здесь не обойдешся, надо использовать системный функции .....
- Почему не обойдёшся? Создавай кверю и запускай в потоке, если надо прекратить - то убивай поток целиком. А ещё если используется BDE то там есть Call Back функции (на неё например можно прицепить обработку сообщений), а для ADO есть ассинхронное выполненте - только программировать под асинхронное выполнение работа не для слабонервных - слишком надо многое проверять и ручками много писать прийдётся....
- Я юзаю квери через ADO.Если вы считаете, что нужно квери запускать в отдельном потоке, топодскажите ссылку на статью, где бы можно было поизучать программирование потоков, так как с потоками ни разу дело не имел.Может есть мысли, как обойтись без потока ?
- Пример работы с потоками есть в Дельфи (см класс TThread).Обойтись можно 1) ADOQuery.executeoptions -> eoAsyncExecuteКверя будет выполняться ассинхронно - т.е. вы можете продолжать работу программы, только прийдётся предусмотреть 2 момента:а) Отследить когда кверя завершитсяб) До завершения квери не желательно её "трогать" (по крайней мере некоторые свойства и методы)- это чревато ошибками.2) Запускать кверю в отдельным приложением
- это изуверство.....
- это изуверство.....Ну, я бы не сказал - если очень серьёзная кверя то может понадобится не только отдельный процесс для запуска, но даже отдельная машина... Всё от задачи зависит
- Насколько я понимаю, вопрос был в том, чтобы прервать запрос, который выполняется, и ты предлагаешь для этого запускать его на другой машине??З.Ы. Я не говорю, про хранимые процедуры....
- Нет конечно, просто твоё замечание по поводу запуска квери отдельным процессом вызвало у меня возражения, потому что в отдельных (не в этом конкретно) случаях это целесообразно.
- Запускать в отдельном приложении - это может и годится, но для небольших запросов это не целесообразно на мой взгляд.Поэтому потоки - пожалуй выход.
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|