Thread creation error : not enough storage После 10-20 мин работы проги выдает такую ошибку. 50 потоков работает. Нагруз на проц 1% На память 10 МБ Потоки каждый после работы удаляется. В чем может быть дело. Помогите плз.
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 вырубаетсяпрога. Но потоки то дестроятся вроде норм. хз непойму
Да вот смотри. Поток какбы удаляется. Но из памяти не удаляеться. Только из переменной наверное. Код я написал. В чем дело хз.
Пишу по памяти... Ты наследушься от класса TThread. перекрываешь метод Execute; При необходимости пишешь свой конструктор, деструктор. PHP: 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 данное значение.