Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: 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 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.033 c
1-41290
_Agent_
2003-11-04 17:16
2003.11.13
Вопрос по Thread, мож кто прояснит в чём дело...


3-40869
denmin
2003-10-21 10:08
2003.11.13
можно ли соединить две таблицы в разных базах


1-41719
Зммей
2003-11-03 17:50
2003.11.13
Функция


1-41195
в
2003-11-01 14:22
2003.11.13
массив из строк: удаление дубликатов


14-41992
Knight
2003-10-17 14:17
2003.11.13
Люди, кто какие проги...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский