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

Вниз

Отмена DataSet.Open в потоке   Найти похожие ветки 

 
Санёк   (2004-11-05 12:44) [0]

Создаю поток в котором

procedure TDBThread.Execute;
 DataSet := TADODataSet.Create(nil);
 DataSet.ConnectionString := ConnectionString;
 DataSet.CommandText := CommandText;
 try
   DataSet.Open;
 except
 end;
end;

потом прибиваю его

 TerminateThread(DBThread.Handle, 0);
 DBThread.DataSet.Free;
 DBThread := nil;

всё работает и так как именно хотелось. Но, есть проблема, память не освобождается. При запуске нового потока программа только увеличивается в размере. Как освободить память?


 
KSergey ©   (2004-11-05 12:49) [1]

Чем память мерял?
Да и создать объект в одном потоке, уничтожить в другом... Впрочем, межет и не страшно, коль скоро того потока уже и нет...
Вот только TerminateThread в любом случае будет приводить к утечкам - ведь создается не только экземпляр DataSet, но и DBThread как минимум. Хотя его, наверное, можно уничтожить (в смысле дельфийский объект), а вот связаннве с ним системные ресурсы... только по закрытию проги...


 
Санёк   (2004-11-05 12:57) [2]

Память мерял "Диспетчер задач Windows":), неужели никак нельзя??? Как же можно прервать открытие набора данных????


 
KSergey ©   (2004-11-05 13:57) [3]

> [2] Санёк   (05.11.04 12:57)
> Память мерял "Диспетчер задач Windows":),

Миллионы раз писалось тут - врет он!


 
sniknik ©   (2004-11-05 14:46) [4]

не врет, просто неправильно считает ;о), вернее считает не то чего юзеры ожидают, ожидают только память программы а оно дает всю пямять задействованную прогой и используемыми модулями (dll/com обьектами/...)
а только память программы в виндах это нечто мифическое. ;о))

> Как же можно прервать открытие набора данных????
элементарно, close, только открываться он должен в асинхронном режиме, иначе не будет доступа к методу до полного завершения открытия.


 
Санёк   (2004-11-05 15:34) [5]

"Не удается выполнить операцию во время ассинхронного выполнения" это при закрытии приложения после Close. И выполнив Close программа всё равно продолжает жрать память... Что с этим делать???


 
Санёк   (2004-11-05 15:35) [6]

Удалено модератором
Примечание: дубль


 
Санёк   (2004-11-05 15:35) [7]

Удалено модератором
Примечание: дубль


 
KSergey ©   (2004-11-05 16:59) [8]

Возможно не Close, а cancel или что-то такое
А вообще точно помню недавно тут было подобное, автора тоже направили по пути асинхронных запросов, правда ему все хотелось мнгновенной реакции, но она не получается. Сам что-то тоже экспериментировал на волне обсуждения, но в упор не помню.

Наверное просто прибивать тред не стоит. Достаточно по нажании кнопки пользователем сделать вид что все прервано. Ну а там уж попытаться завершить внутри потока всю эту галиматью (а то и вовсе без потока - при асинхронном-то режиме).

Ну а если ему еще и прогу приспичило закрыть - ну тогда либо "ждите отмены", либо прибить - тут уже все равно в принципе.


 
sniknik ©   (2004-11-05 17:39) [9]

никаких "ждите", не нужно. посмотри почту.


 
Санёк   (2004-11-05 17:47) [10]

А мне можно посмотреть???? Tualan@yandex.ru


 
KSergey ©   (2004-11-06 10:26) [11]

> sniknik ©   (05.11.04 17:39) [9]
> никаких "ждите", не нужно. посмотри почту.

А мне, мне... ;)
Может сюда?


 
sniknik ©   (2004-11-06 12:18) [12]

> А мне, мне... ;)
так тебе и высылал... не дошло? мыло s_wr@mail.ru нерабочее?

> Может сюда?
куда сюда? кладовка не работает. и потом до вторника все откладывается в любом случае, с работы слал, пример хоть и простенький но набивать повторно желания нет.


 
KSergey ©   (2004-11-06 13:39) [13]

Не на, повторно не надо ;)
Я имел в виду сразу в форум - ну да ладно. Спасибо.


 
Санёк   (2004-11-09 11:25) [14]

А можно всё же примерчик получить???


 
sniknik ©   (2004-11-09 15:48) [15]

выслал. ты бы почту сразу указывал и в положенном месте, как все нормальные люди. а то еще искать нужно, да копировать а не тычком мыши... мрак в общем. обычно на такое не отвечают.


 
Fay ©   (2004-11-09 16:58) [16]

2 sniknik ©   (09.11.04 15:48) [15]
Вас не затруднит отправить и мне то же самое? Plz.



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

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.056 c
6-1096379957
The X
2004-09-28 17:59
2004.12.05
2 вопроса по обработке e-mail


1-1100930694
Gero
2004-11-20 09:04
2004.12.05
Пересоздание окна с MDI-Child ами.


3-1099989419
Uran
2004-11-09 11:36
2004.12.05
Создание dbf в runtime


1-1101317617
Просто Джо
2004-11-24 20:33
2004.12.05
Object Inspector


4-1098081869
Slonco
2004-10-18 10:44
2004.12.05
Как оборвать проигрывание звука при помощи кнопки?