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

Вниз

Как обрубить 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;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.008 c
3-55467
firefox
2003-06-25 12:41
2003.07.17
Декодирование сжатого формата даты ?!?!?


14-55724
AndyNik
2003-07-01 17:03
2003.07.17
Dalphi&Cache


14-55841
Soft
2003-07-01 13:30
2003.07.17
Абсолютное оружие


4-55907
Mix
2003-05-13 18:49
2003.07.17
Replace Resource


3-55431
Skull
2003-06-23 09:42
2003.07.17
Отчетность в Excel





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