Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c