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

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

Нужно прервать попытку соединения с БД [D5, MSSQL]


Страницы:   1 2

AlexG ©   (2004-10-13 12:22:00) 

Использую ADO. Как мне при попытке соединения прервать этот процесс, когда он еще не дошел до таймаута. Другими словами, пользователь передумал проверять соединения и хочет его отменить, но вынужден дожидаться конца работы процесса. Это сейчас. Нужно сделать так, чтобы он не ждал, а сам отменил работу этого процесса.


AlexG   (2004-10-14 10:37:00) [21]

Через ADOConnection.
В ConnectionString помещаю строку, а потом ADOConnection.Connected := TRUE;


malamba   (2004-10-14 10:23:00) [22]

>Использую ADO

ADOConnection ? Или что-то другое.
Если первое, то приведи, пжалста строку подключения.
Если она указывает на файл udl, то получается заморочка и приостановить процесс в самом нечале возможно не удасться.


KSergey   (2004-10-13 16:24:00) [23]

> [7] AlexG ©   (13.10.04 15:46)
> Да, я это прочитал... :( Вот теперь и ищу, как бы его остановить,
> даже "грязно"... Или какой другой способ, тоже было бы не
> плохо... А есть способ "убить" поток, чтобы он потом не
> встал?

Садизмом попахивает.. ;)
Можно. НО: Прохо это, очень плохо... Вся распределенная потоком память так и останется болтаться до завершения приложения...


AlexG   (2004-10-13 15:46:00) [24]

Да, я это прочитал... :( Вот теперь и ищу, как бы его остановить, даже "грязно"... Или какой другой способ, тоже было бы не плохо... А есть способ "убить" поток, чтобы он потом не встал?


KSergey   (2004-10-13 15:42:00) [25]

Теперь почитайте про этот Terminate ;)

По секрету - нишиша он не глушит. Лишь взводит флаг, который выже в своем коде мож ете проверитьи добровольно завершиться (или не завершиться). Или не проверить. Или и возможности не иметь проверить (висим в попытке соединения, например). Так что просто так "красиво" прибить поток - не выйдет, увы... Ну разве что для пользователя будет полная иллюзия того, что он отказался (формочка закроется). А там глядишь - и попытка соедиения на досуге завершится...
А если пользователь и прогу захочет тут же прихлопнуть? А поток-то висит... Ну в смысле ждет.


AlexG   (2004-10-13 15:33:00) [26]

// Жестко?
Я не знаю как жестко глушить его. Знаю только Terminate. А есть какие-то опасности?


KSergey   (2004-10-13 15:32:00) [27]

> [3] AlexG ©   (13.10.04 15:22)
> А при отказе глушить поток.

Как, интересно? Жестко?


AlexG   (2004-10-13 15:22:00) [28]

Теперь уточнение. Мне нужно прервать до таймаута.
Сейчас у меня происходит следующее:
диалоговое окно, узер кликает на "проверить" и происходит попытка соединения с БД, но тут же он решает отменить эту проверку и закрыть диалоговое окно, он нажимет кнопку "Отмена" (вызывается метод ADOConnection.Cancel), а затем закрытия окна, но окно прячется только спустя некоторое время... А мне нужно сразу. Может лучше через потоки? А при отказе глушить поток.


KSergey   (2004-10-13 15:08:00) [29]

Асинхронный коннект - самое оно, по-моему


sniknik   (2004-10-13 12:32:00) [30]

у меня аналогичная проблема... стою на остановке и уже передумал не ехать на только что ушедшем автобусе, и не хочу ждать пока следующий подойдет. как бы его вернуть?
;о))

поставь таймаут поменьше, так чтобы пользователь не успел передумать. и поменяй дельфю пятую на шестую/седьмую или по крайней мере все апдейты поставь. стандартно в пятой в ADO с таймаутами проблемы, и еше кое чего по мелочи.
приходилось изврашатся чтобы поменять.


Страницы:   1 2

Наверх

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