![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Написание обработчика OnTerminate [D7, Win2k]
_Freshman_ © (2004-11-18 14:32:00)Добрый день, Мастера!
Подскажите, как определить обработчик для OnTerminate?
Ниже мой неправильный код, заранее спасибо.
...
TMyThread = class(TThread)
private
procedure OnTerminate(Sender: TObject);
...
constructor MyThread.Create;
begin
inherited Create(false);
FreeOnTerminate := true;
inherited OnTerminate := OnTerminate;
end;
...
procedure TMyThread.OnTerminate(Sender: TObject);
begin
ShowMessage('Сработало!');
end;
...
_Freshman_ (2004-11-18 14:58:00) [1]Спасибо!
Digitman (2004-11-18 14:46:00) [2]TMyThread = class(TThread)
private
procedure DoSomethingOnTerminate(Sender: TObject);
public
constructor Create(CreateSuspended: Boolean);
...
constructor TMyThread.Create;
begin
//создание ПРИОСТАНОВЛЕННОГО потока (ВАЖНО !!!)
inherited Create(True);
//нехай объект сам себя по завершению уничтожает
FreeOnTerminate := true;
//назначим обработчик
OnTerminate := DoSomethingOnTerminate;
//а вот теперь, если конструктор был вызван с опцией немедленного старта потока после его создания,
//стартуем его.. в этот момент обработчик OnTerminate уже назначен и актуален
if not CreateSuspended then
Resume;
end;
...
procedure TMyThread.DoSomethingOnTerminate(Sender: TObject);
begin
ShowMessage('Сработало!');
end;