Просмотр полной версии : ХЕЛП!!! Thread creation error : not enough storage
Thread creation error : not enough storage
После 10-20 мин работы проги выдает такую ошибку. 50 потоков работает.
Нагруз на проц 1%
На память 10 МБ
Потоки каждый после работы удаляется.
В чем может быть дело. Помогите плз.
Выложи исходный код, или хотя бы часть которая отвечает за работу с потоками.
После создания потока ты закрываешь его хендл?
Ну и в конце каждого потока ExitThread(0)
procedure ge.Execute;
begin
try
Synchronize(unit1.Form1.porgr);
self.Terminate;
self.Free;
self.Destroy;
except
Synchronize(unit1.Form1.porgr);
self.Terminate;
self.Free;
self.Destroy;
end;
end;
Наверное потоки не удаляются потому что диспетчер опказывает нарастание памяти проги в оператве. Доходя до 30Мб скачут ошибки а на 34 вырубаетсяпрога. Но потоки то дестроятся вроде норм. хз непойму :(
Смотри внимательно где ты освобождаешь ресурсы и правильно ли ты это делаешь.
Да вот смотри. Поток какбы удаляется. Но из памяти не удаляеться. Только из переменной наверное. Код я написал. В чем дело хз.
ZdezBilYa
06.08.2009, 02:00
попробуй использовать ExitThread(0)
procedure ge.Execute;
begin
try
Synchronize(unit1.Form1.porgr);
self.Terminate;
self.Free;
self.Destroy;
except
Synchronize(unit1.Form1.porgr);
self.Terminate;
self.Free;
self.Destroy;
end;
end;
o_O
Пишу по памяти...
Ты наследушься от класса TThread.
перекрываешь метод Execute;
При необходимости пишешь свой конструктор, деструктор.
constructor Create(CreateSuspended: Boolean);
begin
self.FreeOnTerminate:=true;
end;
procedure ge.Execute; override
begin
try
SomeLogic
except
self.Terminate;
finally
Synchronize(unit1.Form1.porgr);
end
имхо... хотя мог и ошибиться, забыл уже дельфи =(
По моему достаточно присвоить переменной FreeOnTerminate значение True, как написал W!z@rD. Я в своих программах так делаю, - потоки освобождают память. Но я не переписываю конструктор/деконструктор, я при создании потока присваиваю его параметру FreeOnTerminate данное значение.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot