Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать форму в ручную и освободить из памяти предыдущую форму, на С++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 21:49
Создать класс с именем BIBL(нужно исправить) Jereme Общие вопросы C/C++ 1 22.01.2010 15:03
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36