Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.01 c
1-60586
Nikoss
2002-08-06 00:10
2002.08.19
Подскажите, как узнать из какой процедуры была вызванна процедура


14-60816
Horreap
2002-07-20 21:44
2002.08.19
ID3 TAG v2


1-60658
Вечно молодой
2002-08-08 21:13
2002.08.19
TListView


4-60899
MARcoDEN
2002-06-10 20:21
2002.08.19
Проблема с хэндлом


3-60536
Hawk2
2002-07-30 15:20
2002.08.19
Пустые значения в полях типа DateTime.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский