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

Вниз

Отмена 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
3-1099884978
UVV
2004-11-08 06:36
2004.12.05
Компоненты для работы с Oracle


14-1100074668
Суслик
2004-11-10 11:17
2004.12.05
Где купить delphi6 со всеми сервис паками?


3-1099689705
Zif
2004-11-06 00:21
2004.12.05
Сервис->Служебные программы->Сжать и восстановить базу...


3-1099652399
Janb
2004-11-05 13:59
2004.12.05
Что выбрать? Или как сделать?


6-1096557772
Ig
2004-09-30 19:22
2004.12.05
Статьи по компонентам Indy ( TIdTCPServer,TIdUDPServer)





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