Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.035 c
7-42214
SiJack
2003-09-04 14:06
2003.11.13
работа с Com в Win98-winXP


4-42301
ruslan_as
2003-09-08 12:42
2003.11.13
Занести пароль в окно другого приложения


1-41444
ewgeny
2003-10-29 12:26
2003.11.13
TService и формы


3-41003
Алексей Петухов
2003-10-16 07:22
2003.11.13
Directory is busy


3-40878
Vladislav
2003-10-20 17:51
2003.11.13
MemoryTable в Interbase





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский