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

Вниз

Помогите с ADO не освобождается память   Найти похожие ветки 

 
Andrey000   (2003-11-03 11:56) [0]

Проблемма такая не освобождается один дескриптор помогите :(
program s1;

{$APPTYPE CONSOLE}

uses
SysUtils,
ADODB,
ActiveX,
Classes,windows;

type
ms = class(TThread)
private
protected
aq1:TADOQuery;
error:boolean;
procedure Execute; override;
public
destructor Destroy;override;

end;

destructor ms.destroy;
begin
CoUnInitialize
aq1.free;
inherited destroy;
end;

procedure ms.Execute;
begin
CoInitialize(nil);
error:=false;
aq1:=TADOQuery.Create(nil);
aq1.ConnectionString:="driver={SQL Server}; server=serv; Database =master;Password=123;User ID=sa;";
aq1.CommandTimeout:=15;
aq1.Close;
aq1.SQL.Clear;
aq1.sql.Text:="use tempdb select * from dbo.syscolumns";
try
aq1.open;
except
error:=true;
end;
if error=true then
begin
end;
freeonterminate:=true;
end;

var fl:boolean;
begin
fl:=true;
repeat
ms.Create(false);
sleep(100000);
until fl=false;
end.


 
sniknik   (2003-11-03 12:24) [1]

а нафига тебе бесконечно большое количество потоков? да еще с незакрытой инициализацией (CoInitialize) в каждом? их количество (ин/анинициализаций) должно быть строго парным. + освобождение ком обьекта (aq1.free) после разынициализации (CoUnInitialize).


 
Andrey000   (2003-11-03 12:39) [2]

так надо опрашивать базу каждые н секунд :)
я пробовал поставить и execute без деструктора все одна фигня


 
sniknik   (2003-11-03 12:49) [3]

ну так и опрашивай кто тебе не дает, но не создавай для одного опроса отдельный поток, ну или хотя бы "заноси ему хвосты" в смысле убирай все что наплодил.
или вообще не пользуйся потоком, раз все одно цикл вставляеш.


 
Andrey000   (2003-11-03 12:54) [4]

Просто потом я этот поток в сервис вставлю. А это я так пока отлаживаюсь


 
sniknik   (2003-11-03 13:16) [5]

в сервис-е тоже не обязательно свой поток создавать, он и так в отдельном потоке запускается, другое дело понадобилось бы их несколько.
(просто если ты так и перенесеш все с циклом, то бедные твои пользователи ;о)), не завидую я им)

> А это я так пока отлаживаюсь
а чего ошибки то не исправляеш?

кстати в первом посте (там можно не так понять)
освобождение ком обьекта (aq1.free) после разынициализации (CoUnInitialize) это именно ошибка.


 
Andrey000   (2003-11-03 13:19) [6]

я испраил ситуация та же :(
кстати если не производить инициализацию в потоке то выдает ошибку


 
sniknik   (2003-11-03 13:37) [7]

> я испраил ситуация та же :(
и что получилось?
ADOConnection добавь, без него бывают странныу глюки(?) ситуации.


 
Andrey000   (2003-11-03 15:49) [8]

добавил все равно потеря указателя :( млин


 
sniknik   (2003-11-03 17:28) [9]

aq1.free с CoUnInitialize местами поменял?

и делал бы все в Execute;

begin
CoInitialize(nil);
try
xxx :=TADOQuery.Create(nil);
try
...
while not Terminated do begin
try
aq1.open;
except
...
end;
...
sleep(100000);
end;
...
finally
xxx.Free;
end;
finally
CoUnInitialize;
end;
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.01 c
1-79013
Michael_X
2003-11-14 09:27
2003.11.24
Считывание табличных данных из файла.


4-79218
Borys
2003-09-30 13:13
2003.11.24
COM в сервисе


1-78915
AlexanderSK
2003-11-12 16:39
2003.11.24
vcl.bpl и rtl60.bpl


14-79174
Сатир
2003-10-30 12:30
2003.11.24
Консультанты, крепитесь!


3-78808
MORA
2003-11-06 08:27
2003.11.24
UDF





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