Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.04.2010, 00:08   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Освободить поток. Нужно удалить 1 событие и 1 класс

Код:
  TOnDone = procedure(Sender: TObject) of object;

type
  T=class(TThread)
  private
    _ip: string;
    _port: integer;
    _tag: Integer;
    _to: Integer;

    http: TIdHTTP;

    FOnDone: TOnDone;

    procedure Execute; override;

    public
    property idHTTP: TIdHTTP read http;
    property tag: Integer read _tag;
    property ip: string read _ip;
    property port: integer read _port;
    property onDone: TOnDone read FOnDone write FOnDone;
    constructor Create(...);
  end;
Вот. Работает такой поток, работает - вдруг до ходит до своего логического завершения (выполнил мою задачу) - посылает мне FOnDone(Self); А я его в onDone и уничтожаю:
Код:
pc.idHTTP.Free;
pc.Terminate;
Может я чего забыл - т.к. память полностью не освобождается?
TwiX вне форума   Ответить с цитированием
Старый 25.04.2010, 00:16   #2
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

если ты при создании напишеш FreeOnTerminate:=true; то поток удалиться сам после завершения;
а Terminate не че не делает удалять из памяти надо тоже командой Free



создавай поток так
Код:
pc:= T.Create(true);  
pc.FreeOnTerminate:=true;  // true - значит удалиться сам после завершения
pc.Resume;
а все что создаёшь в самом потоке удаляй там же в потоке try так:
Код:
MyClass := TComponent.Create(Self);
try
finally
  MyClass.Free;
end;

Последний раз редактировалось пауэрлифтинг; 25.04.2010 в 00:30.
пауэрлифтинг вне форума   Ответить с цитированием
Старый 25.04.2010, 06:02   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

FreeOnTerminate не освобождает память, выделенную под объекты потока, к вашему сведению
TwiX вне форума   Ответить с цитированием
Старый 26.04.2010, 02:23   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Аппппппппп
TwiX вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать форму в ручную и освободить из памяти предыдущую форму, на С++Builder 2009? AndreyK Общие вопросы C/C++ 1 18.01.2012 20:54
Удалить символ из строки - класс контейнер ArniLand Общие вопросы C/C++ 0 31.03.2010 20:29
освободить СОМ порт varelik Общие вопросы Delphi 11 11.02.2010 22:49
Создать класс с именем BIBL(нужно исправить) Jereme Общие вопросы C/C++ 1 22.01.2010 16:03
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 22:36


19:29.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.