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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OnTerminate потока в модуле потока 
:(
    Опции темы
ЧеловекБорща
Дата 20.1.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет!

Собственно сабж такой: 
Код

type
  TAppThread = class(TThread) 
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public
    constructor Create;
    destructor Destroy; override;
    procedure AOnTerminate;
    procedure AppIsStopped;
  end;


implementation


constructor TAppThread.Create;
begin
inherited Create(true);
OnTerminate:= ???; //Не видит AOnTerminate
end;

destructor TAppThread.Destroy;
begin
  //
  inherited;
end;

procedure TAppThread.AOnTerminate;
begin
Synchronize(AppIsStopped);
end;


Поясню, при terminate потока нужно вызвать synchronize процедуру(она в AppIsStopped).
Все в самом модуле потока. 
PM MAIL   Вверх
Alexeis
Дата 20.1.2011, 13:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Цитата(ЧеловекБорща @  20.1.2011,  14:12 Найти цитируемый пост)
Поясню, при terminate потока нужно вызвать synchronize процедуру(она в AppIsStopped).

  Насколько я помню, OnTerminate выполняется в главном потоке поэтому synchronize не нужен. Иначе нужно делать вызов в Execute после окончания цикла.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 20.1.2011, 14:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(ЧеловекБорща @  20.1.2011,  13:12 Найти цитируемый пост)
OnTerminate:= ???; //Не видит AOnTerminate
...
procedure AOnTerminate;
...

TThread.OnTerminate: TNotifyEvent;
TNotifyEvent = procedure(Sender: TObject) of object;
ы?

Это сообщение отредактировал(а) MetalFan - 20.1.2011, 14:37


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
ЧеловекБорща
Дата 21.1.2011, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Можно пожалуйста пример ввиде кода? Замучался уже. 

Это сообщение отредактировал(а) ЧеловекБорща - 21.1.2011, 19:44
PM MAIL   Вверх
ЧеловекБорща
Дата 23.1.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Подкиньте пжлста, код, ну не втыкаю я как=) 
PM MAIL   Вверх
CodeMonkey
Дата 23.1.2011, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



OnTerminate имеет тип TNotifyEvent.

TNotifyEvent - это procedure(Sender: TObject);

Следовательно, прототип AOnTerminate должен иметь другой прототип.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ЧеловекБорща
Дата 23.1.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



следовательно так? 
Код

type
  TmyType = class(TObject)
public 
Procedure AOnTerminate(sender:Tobject);
end;

{...тут все остьльное....}


PM MAIL   Вверх
CodeMonkey
Дата 23.1.2011, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Ну так ты проверь и увидишь - так или не так.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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