Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.023 c
14-1100776312
Pentium133
2004-11-18 14:11
2004.12.05
Знатоки CVS


1-1100852536
Arick
2004-11-19 11:22
2004.12.05
C++ и D7


1-1100970808
ЛёхА
2004-11-20 20:13
2004.12.05
Радактор кода


1-1100667108
Progh
2004-11-17 07:51
2004.12.05
Как узнать входит ли время в интервал?


6-1096023735
Wolfram
2004-09-24 15:02
2004.12.05
Работа с vCard




   Наверх