Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизКак прервать процесс соединения TADOConnection с MSSQL? Найти похожие ветки
← →
DAO (2002-07-27 21:40) [0]Запускаю параллельный поток для коннекта вывожу окошко с анимацией где можно нажать Cancel, но вот беда! TThread.Terminate не может немедленно прекратить свое действие и при этом правильно освободить ресурсы! Что делать? Помогите...
← →
Набережных С. (2002-07-27 22:28) [1]Async + Cancel. Без потоков.
← →
DAO (2002-07-28 07:54) [2]В смысле cancel... Это где у него там Cancel? Можно грамс по подробнее... Плиз
← →
Набережных С. (2002-07-28 10:27) [3]Ну дык у ADOConnection и есть. Ты открой хелп на списке методов - он там второй сверху, глубоко рыть не надо. Поставил в ConnectOptions асинхронный режим - и вперед, на винные склады :)
← →
DAO (2002-07-28 10:55) [4]А все нашел.... Сэнкс. А как будет выглядить код? Мне кажеться все равно нужен поток! Иначе прога(главный поток) будет занята процессом коннекта! И реагировать на события не будет! Т.е. я себе картину полностью не представляю! Допустим я вызвал метод Open и ... Он же остановиться на этом! Дальше не пойдет пока не будет возврата из процедуры!
← →
Набережных С. (2002-07-28 11:47) [5]Да чего бы он остановился, сразу вернется. Можно конечно и поток при желании:) Но если хочешь разобраться, то копай глубже в ADO, не останавливайся на компонентах-обертках. Все равно, если не разберешся, то толку не будет. Вот попробуй для начала поиграться с этим:
procedure TForm1.Timer1Timer(Sender: TObject);
var
FSt:Cardinal;
begin
with ADOConnection1 do
begin
if stOpen in state then FSt:=1 else FSt:=0;
if stConnecting in state then FSt:=FSt or 2;
Cancel;
end;
Timer1.Enabled:=false;
Label1.Caption:=IntToStr(FSt);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Timer1.Enabled:=true;
// ADOConnection1.Open;
with ADOConnection1.ConnectionObject do Open(ConnectionString,"","",$10);//Тож самое, только без AfterConnect и проверок
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if ADOConnection1.Connected then ShowMessage("yes")
else ShowMessage("No");
end;
Попробуй разные режемы, интервалы в таймере, проследи отладчиком цепочки вызовов.
← →
DAO (2002-07-28 20:40) [6]Да у меня то он ща через поток работает! Вот только смысла в Cancel не вижу! Я его канцелю, а он стоит и ждет, пока ответ вернеться! Это не дело! Надо что то искать... А ты посоветовал ADO почитать да? А где можно взять доки а? Или это все там же... ...MSDN! Кстати, еще один вопрос MSDN брать на 6 CD или на 1 хватет?
← →
Набережных С. (2002-07-29 19:59) [7]Ну так ты coAsyncConnect в ConnectOptions поставил? Мой пример пробовал гонять? Что выводится в лэйбл при интервале 50мс, 100, 1000, 3000?
По поводу MSDN: скупой платит дважды.
Опережая следущий этап - купи на базаре диск с любым Си и выдери из него заголовки, без них - труба.
По поводу АДО: MSDN в первую очередь,но в сети довольно много инфы, только не торопись верить всему сразу, ляпов везде хватает, в том числе и в мсдн. Еще слышал, что вышла какая-то толстая книжка, но че к чему - не в курсе.
← →
DAO (2002-07-29 21:00) [8]Да нет брат. Ты не понял видать! Ты пробовал отключить или стопонуть MSSQLServer и запустить коннект! Ааа... Вот так то! Он ждет пока что нибудь то да не пройзойдет! А сервера нет, поэтому отвечать некому! А значит будет ждать таймаут.. И никакой дядя Степа его не остановит, к сожалению!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c