Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> описание OnTerninate в потоке 
:(
    Опции темы
DmitryHT
Дата 18.10.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



в данном примере (пример простого многопоточного приложения) исп. след код для события OnTerminate
Код

procedure TForm1.EventMyThreadOnTerminate (Sender :tObject);
begin

  // На всякий случай, убедимся что экземпляр объекта еще существует
  if  not Assigned(MyThread) then Exit; // если его нет, то и делать нечего

  // Еще раз замечу - не уничтожим объект, а только затрем ссылку. Объект
  // уничтожится сам!
  MyThread := Nil;
end;



Можно ли описывать OnTerminate в самом потоке, например, так:
Код

procedure tPotok.execute;
begin
  potok[TT].OnTerminate:= ThreadDone;
  GetIt:=TIdHttp.create(nil);
...
...


и само событие
Код

procedure tPotok.ThreadDone(Sender: TObject);
begin
  if not Assigned(potok[TT])
  then Exit;
  potok[TT]:= nil;
end;



Либо если нельзя, то как передать в procedure TForm1.EventMyThreadOnTerminate (Sender :tObject);
объект, нужно затереть если он описан в виде массива потоков, т.е. potok[i].OnTerminate


Спасибо!  smile 
PM MAIL   Вверх
aktuba
Дата 18.10.2007, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 9
Всего: 38



Цитата

Можно ли описывать OnTerminate в самом потоке


Нет.

Цитата

как передать в procedure TForm1.EventMyThreadOnTerminate (Sender :tObject);
объект, нужно затереть если он описан в виде массива потоков, т.е. potok[i].OnTerminate


Заведи в потоке паблик свойство, в котором храни индекс текущего потока, а в OnTerminate сделай примерно следующее:
Код

procedure TForm1.EventMyThreadOnTerminate (Sender :tObject);
begin
  if  not Assigned(MyThreads[TMyThread(Sender).Index]) then Exit; 
  MyThreads[TMyThread(Sender).Index] := Nil;
end;


P.S.: не надо использовать цветной текст в посте - только мешает, имхо...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
DmitryHT
Дата 18.10.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



спасибо, так отлично работает!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.