Главная страница
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.034 c
7-1081420177
onyx
2004-04-08 14:29
2004.05.16
Работа с именем файла


6-1080222469
alexprozorov
2004-03-25 16:47
2004.05.16
Опять про нотификационные сообщения


3-1082626833
rserg
2004-04-22 13:40
2004.05.16
FibPlus и загрузка процессора при долгой работе программы


1-1083595163
Реактор
2004-05-03 18:39
2004.05.16
Загрузка процессора


1-1082651546
Vitalnet
2004-04-22 20:32
2004.05.16
Увидеть весь тект в выподающем меню