Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

TThred...   Найти похожие ветки 

 
Hkr ©   (2004-04-24 10:36) [0]

Как сделать так, чтобы объект типа TThred не уничтожался, когда сделает всю работу?


 
uny   (2004-04-24 10:41) [1]

не успеваете сказать спасибо?:)


 
Locker   (2004-04-24 10:42) [2]

YourThread.FreeOnTerminate := false;


 
MBo ©   (2004-04-24 10:53) [3]

Поток заканчивает работу при завершении метода Execute. Зачем он потом нужен? Не лучше ли будет Suspend-Resume его при необходимости, или ждать в нем какого-нибудь события?


 
Locker   (2004-04-24 13:11) [4]

> Зачем он потом нужен
 Например, хранение результатов до тех пор, пока они не понадобятся.


 
Piter ©   (2004-04-24 13:57) [5]

Поток сделал работу, получил результаты, вернул их и завершился. Зачем держать поток только для того, чтобы узнать результаты? Поток - это тебе не  переменная для хранения


 
Hkr ©   (2004-04-24 15:30) [6]


> Locker   (24.04.04 10:42) [2]
> YourThread.FreeOnTerminate := false;

Нет, так не получается, мнее, впринципе, надо поток вызывать несколько раз(тоесть при нажатии на кнопку)...

> MBo ©   (24.04.04 10:53) [3]
> Не лучше ли будет Suspend-Resume его
> при необходимости, или ждать в нем какого-нибудь события?

Тоесть, тоесть сделать бесконечный цикл и при его переходе(или как?) делать Suspend?


 
evvcom ©   (2004-04-24 15:52) [7]

За последние 2-3 дня несколько веток было по потокам. Все эти вопросы обсуждались.
> Тоесть, тоесть сделать бесконечный цикл и при его переходе(или
> как?) делать Suspend?

Типа того. Просмотрите за последние 2-3 дня ветки.


 
Piter ©   (2004-04-24 19:36) [8]

Hkr (24.04.04 15:30) [6]
надо поток вызывать несколько раз


А в чем проблема? Создал поток - он отработал и завершился.
Нужно еще раз - создал еще раз поток, он опять отработал и завершился. Имхо, правильная логика такая


 
Hkr ©   (2004-04-25 09:37) [9]


> evvcom ©   (24.04.04 15:52) [7]

Точно, работает, Спасибо.

> Piter ©   (24.04.04 19:36) [8]
> А в чем проблема? Создал поток - он отработал и завершился.
> Нужно еще раз - создал еще раз поток, он опять отработал
> и завершился. Имхо, правильная логика такая

а как его сделать еще раз?


 
Piter ©   (2004-04-25 12:28) [10]

Hkr (25.04.04 09:37) [9]
а как его сделать еще раз?


хех. А как ты его делал в первый раз? :)


 
Hkr ©   (2004-04-29 10:29) [11]

Тоесть Free его а потом заного Create?


 
panov ©   (2004-04-29 10:51) [12]

Вот шаблон.
Единственное, надо добавить критические секции.

TMyThread=class
private
 FData: String
 procedure Display;
protected
 procedure Execute; override;
public
 constructor Create;
 procedure Go(aStr: String);
end;

constructor TMyThread.Create;
begin
 inherited CReate(True);
 FreeOnTerminate := true;
end;

procedure TMyThread.Execute;
begin
 while not Terminated do
 begin
   //здесь работаем с данными, в данном случае - с FData
   Synchronize(Display);
   Suspend;
 end;
end;

procedure TMyThread.Go(aStr: String);
begin
 if not Suspended then Exit;
 FData := aStr;
 Resume;
end;


 
Hkr ©   (2004-05-02 20:58) [13]


> panov ©  

Спасибо. :)



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
3-1082348585
Layner
2004-04-19 08:23
2004.05.16
Вставка записи в табл. на одном MS SQL сервере должно зеркально


1-1083326814
Ivolg
2004-04-30 16:06
2004.05.16
Линейка


14-1082623327
Frozzen
2004-04-22 12:42
2004.05.16
Объявление функции


9-1072382293
lucky
2003-12-25 22:58
2004.05.16
Помогите плз сделать 3d врыв в DelphiX.


6-1080561800
Ламеридзэ
2004-03-29 16:03
2004.05.16
РФЦ