Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Как прервать процесс соединения 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-60714
Olivka
2002-08-06 23:35
2002.08.19
Чем писать на диски?


14-60822
Brand
2002-07-22 17:39
2002.08.19
Делфи или не делфи.


6-60772
GreatMaster
2002-06-06 18:42
2002.08.19
Client/Server Sockets+Internet - тормоза


1-60739
Leny
2002-08-07 12:52
2002.08.19
Поверх всех окон


1-60692
Edvin
2002-08-06 13:45
2002.08.19
Эмулировать нажатие Ctrl+V