Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Вниз

Как обрубить sql запрос, который работает в отдельном потоке?   Найти похожие ветки 

 
Chestniy   (2003-06-24 15:38) [0]

Доброго Времени Суток!
Вопрос видимо стандартный, но ответа на него пока не нашел. Используется MsSQL (7.5 и 2000) с доступом через ADO. При каждом обращении к бд открывается новый поток, в рамках которого запрос и выполняется. Теперь вопрос - как корректно остановить выполнение запроса (например, по желанию пользователя, которому надоело ждать :)? Если просто TerminateThread - остается блокировка на сервере.


 
stone   (2003-06-24 15:41) [1]


destructor TYourThread.Destroy;
begin
with ADOCommand do
if stExecuting in States then
Cancel;
with ADOConnection do
if InTransaction then
RollbackTrans;
inherited;
end;


 
Chestniy   (2003-06-24 16:31) [2]

Спасибо за быстрый ответ :)
но .. увы, виснет.
делаю вначале TerminateThread, потом вызываю Thread.Destroy.
В обработчик попадает, но потом виснет на первой же строчке ...
Другими словами если после вызова TerminateThread обратиться к компонентам работы с бд (ADOConnection, ADOCommand и т.п. ), то приложение безжалостно виснет. А если к ним не обрашаться - то как обрубить поток?


 
stone   (2003-06-24 16:52) [3]


> Chestniy (24.06.03 16:31)


> делаю вначале TerminateThread
Этого достаточно

Не надо никуда обращаться, а тем более вызывать Thread.Destroy
Компоненты (ADOConnection, ADOCommand и т.п. ) для потока, должны быть определены именно в потоке путем создания или присваивания. В Execute перед каждым запуском ADOCommand.Execute должно стоять if not Terminated. При создании потока в Constructor указывается FreeOnTerminate := true

Вроде все... если чего не забыл



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
4-55889
Comwad
2003-05-15 08:44
2003.07.17
Как создать программно ярлык на рабочем столе?


7-55874
Ruslan
2003-05-02 11:24
2003.07.17
Проблема при выключении компа


14-55710
Думкин
2003-06-26 07:26
2003.07.17
Флеш


3-55415
andrew_kv
2003-06-24 08:50
2003.07.17
Есть соединение с SQL сервером через ADO


14-55750
k-man
2003-07-02 21:40
2003.07.17
Стихи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский