Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2011, 01:52   #11
Dеlphi
нажмите + на весах
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 30
По умолчанию

ясно. спасибо всем
Если помог нажми на весы
Dеlphi вне форума Ответить с цитированием
Старый 04.03.2015, 16:45   #12
Shamr
Новичок
Джуниор
 
Регистрация: 04.11.2014
Сообщений: 2
По умолчанию Как сделать так чтобы поток мог запускаться много раз.

Как бы все правы. И я придумал, как выйти из указанного положения.
Надо было создать таймер. Свой собственный, для применения не в потоке, а в своих компонентах.
Добавил поле Stopped. Которое останавливало таймер без применения процедуры таймера.
Естественно я не занимался не нужными мне вещами. Если метод Stop запустить ДО метода Go, то метод Go сразу вызовет процедуру таймера.
Но у меня так и планировалось .

interface
type
TOunTimer = class(TThread)
Private
T : TDateTime;
FOnTimer : TNotifyEvent;
FInterval : Integer;
Stopped : Boolean;
Public
Constructor Create(OnTimer : TNotifyEvent);
Destructor Destroy; override;
Procedure Execute; Override;
Procedure Go;
Procedure Stop;
Property Interval : Integer read FInterval Write FInterval;
end;


implementation

constructor TOunTimer.Create(OnTimer : TNotifyEvent);
begin
inherited Create(true);
Stopped := False;
FOnTimer := OnTimer;
end;

destructor TOunTimer.Destroy;
begin
inherited;
end;

procedure TOunTimer.Execute;
begin
While Not(Terminated) Do
Begin
While (Now < T + Interval / 24 / 3600000) And Not(Self.Stopped) Do
Sleep(1);
If Not(Stopped) Then
Begin
If Assigned(Self.FOnTimer) Then FOnTimer(nil);
End;
Stopped := False;
Self.Suspend;
End;
end;

procedure TOunTimer.Go;
begin
T := Now;
Self.Resume;
//Start;
end;

procedure TOunTimer.Stop;
begin
Stopped := True;
end;

end.
Shamr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить приложение несколько раз? Trip Помощь студентам 2 04.09.2011 18:28
Как запустить одно приложение много раз ? Jugger Операционные системы общие вопросы 2 08.03.2011 22:07
Как запустить форму только один раз artemavd Общие вопросы Delphi 9 28.11.2010 16:43
КАК в DELPHI сделать второй поток ( чтобы pop3 с прогой не вис) M@g soft Помощь студентам 0 11.05.2009 18:12
Как остановить поток а потом снова запустить? Des Общие вопросы Delphi 5 03.05.2009 12:35