Вниз
Скачать: CL | DM;

мой компонент и поток в нем   Найти похожие ветки 

← →
alex134   (2003-10-30 15:24) [0]

Есть компонент, в нем поток. Пишу для компонента событие окончания работы потока. Как его теперь сгенерировать из потоковой процедуры?


← →
panov ©   (2003-10-30 15:45) [1]

1. В конструктор потока передавать адрес CallBack функции, например, и вызывать эуту функцию там, где это требуется.
2. Windows-сообщениями.


← →
Владислав ©   (2003-10-30 15:56) [2]

Либо TThread.OnTerminate


← →
Digitman ©   (2003-10-30 15:58) [3]

TMyComponent = class;

TMyThread = class(...)
private
...
FMyCreator: TMyComponent;
...
public
constructor Create(..., Creator: TMyComponent);
end;

TMyComponent = class(..)
private
...
FMyThread: TMyThread;
FOnMyEvent: TMyEventProc;
...
end;

procedure TMyComponent.CreateMyThread;
begin
FMyThread := TMyThread.Create(..., Self);
end;

constructor TMyThread.Create(..., Creator: TMyComponent);
begin
...
FMyCreator := Creator;
...
end;

procedure TMyThread.Execute;
begin
...
if Assigned(FMyCreator) then
if Assigned(FMyCreator.FOnMyEvent) then
FOnMyEvent(...);
...
end;


← →
Владислав ©   (2003-10-30 16:14) [4]

> Digitman © (30.10.03 15:58) [3]

Оно хорошо до тех пор, пока отсутствует вероятность уничтожения компонента еще до завершения потоковой процедуры.


← →
Digitman ©   (2003-10-30 16:33) [5]


> пока отсутствует вероятность уничтожения компонента еще
> до завершения потоковой процедуры.


компонент твой ? твой, думаю) ...
так что ж что мешает перекрыть его диструктор и в теле переопределенного диструктора скомандовать созданному потоку "закруглиться" и дождаться штатного завершения потока, после чего тут же (при необходимости) выполнить поточный_объект.Free ??

и это не единственное решение ! корректных и изящных решений - уйма !


← →
Владислав ©   (2003-10-30 16:54) [6]

> Digitman © (30.10.03 16:33) [5]

"компонент твой"

Не, не мой :)

В остальном полностью согласен.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
6-41846
TOL-12
2003-09-12 14:08
2003.11.13
Мой чат


3-40891
Fuelfire
2003-10-20 12:12
2003.11.13
Обновление грида после закрытия формы


14-41956
mrcat
2003-10-20 10:29
2003.11.13
Implib.exe


7-42192
ZioN
2003-08-28 15:13
2003.11.13
Работа с CD-Rom


1-41624
Chlavik
2003-10-25 13:58
2003.11.13
SysImageList... (Иконки)




   Наверх