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

поток и объявление процедуры   Найти похожие ветки 

← →
KIM   (2005-11-15 20:28) [0]

всем привет
приложение запускает поток(Tthrd1) который запускает еще несколько потоков(Tthrd2) в какой секции Tthrd1 объявить процедуру чтоб она была доступна в потоках(Tthrd2) ???

P.S.  Tthrd1 <> Tthrd2


← →
begin...end ©   (2005-11-15 21:08) [1]

Переформулируйте вопрос.


← →
KIM   (2005-11-16 00:19) [2]

чтото более простой формулировки придумать не получается

а в каком месте не понятно ??


← →
Leonid Troyanovsky ©   (2005-11-16 09:18) [3]


> KIM   (15.11.05 20:28)  

> приложение запускает поток(Tthrd1) который запускает еще
> несколько потоков(Tthrd2) в какой секции Tthrd1 объявить
> процедуру чтоб она была доступна в потоках(Tthrd2) ???


Т.к. Tthrd1 запускает Tthrd2, то после создания последнего
ему можно передать ссылку на нужный метод Tthrd1.
Например,

type
Tthrd1 = class (TThread)
private
  procedure XXX (Sender: TObject); // вызываемый метод
  ..
end;

Tthrd2 = class(TThread)
private
  FOnXXX : TNotifyEvent; // ссылка
  ..
protected
  procedure DoXXX; dynamic; // метод диспетчеризации
  ..
public
  property OnXXX: TNotifyEvent read FOnXXX write FOnXXX;
end;

procedure Tthrd2.DoXXX; // вызов метода по ссылке FOnXXX
begin
  if Assigned(FOnXXX) then
    FOnXXX(Self);
end;

 procedure Tthrd1.Execute; // override;
 begin
   ..
   with Tthrd2.Create(True) do
      begin
        ..
        OnXXX := XXX; // назначили ссылку
        Resume; // пустили поток
      end;
    ..
 end;


Ну, а Tthrd2 в нужных местах вызывает DoXXX, который, собс-но, и
выполняет метод XXX класса Tthrd1.

Кроме того, весьма вероятно, что оные манипуляции потребуют на
каком-то этапе синхронизации (see also: TThread.Synchronize).

--
Regards, LVT.



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

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



Память: 0.45 MB
Время: 0.027 c
5-1115295849
Priest
2005-05-05 16:24
2005.12.04
Редактор компонент в RunTime


14-1130861726
X9
2005-11-01 19:15
2005.12.04
Драйвер на Data-кабель


14-1132024353
Glosariy
2005-11-15 06:12
2005.12.04
ПОМОГИТЕ ПОЖАЛУЙСТА ОЧЕНЬ НУЖНО!!!!!!! Поиск в базе данных


14-1132105445
OldNaum
2005-11-16 04:44
2005.12.04
Интересно ваше мнение


14-1131812706
Andy BitOff
2005-11-12 19:25
2005.12.04
В вы говорите...




   Наверх