Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Потоки + таймер?


Ura ©   (2002-02-01 12:18:00) 

Нужно запустить поток (Р) который будет каждые 5 минут проверять коннект с сервером и устанавливать переменную F = true;
Как сделать чтобы Р просыпался сам каждые 5 минут.
P - запускается должен запускаться до дапуска головной формы.
Р, F - как глобальные объекты


Ura   (2002-02-01 13:50:00) [1]

> yaJohn ©
Спасибо. Понял все правильно. И главное красиво.


yaJohn   (2002-02-01 12:55:00) [2]

>Как сделать чтобы Р просыпался сам каждые 5 минут.
procedure MyThread.Execute;
begin
repeat
// .................... Vash polezniy (nadeus") kod.......
Sleep(5*60*1000);
until Terminated;
end;


>P - запускается должен запускаться до дапуска головной формы.
1. Zapuskay ego iz MyApplication.dpr
2. Zapuskay ego iz sekcii begin-end. lubogo modulia (naprimer togo, gde on obiavlen kak global"naya peremennaya.
3. до дапуска??? Chto imeetsia v vidu? Do aktivizacii? Sm. TForm.OnCreate; Do sozdania? Sm. p.1-2

>проверять коннект с сервером и устанавливать переменную F = true;
Ne zabivaem pro Synhronize...


Ura   (2002-02-01 12:52:00) [3]

С потоком все ясно.
Вопрос в том что нет хозяина потока, который бы им управлял.
Поток живет отдельной жизнью. И ЗАПУСКАЕТЬСЯ ДО СТАРТА ОСНОВНОЙ ФОРМЫ. так бы через нее сделали...
Хоть самому проверяй время вечном цикле в потоке. Но некрасиво...


Romul   (2002-02-01 12:30:00) [4]

//Это в модуле где описывается поток
type
MyThread = class(TThread)
procedure Execute; override;
procedure Work;
end;

implemetation

procedure MyThread.Execute;
begin
Work;
end;

procedure MyThread.Work;
begin
// Тут делаешь все необходимое
end;

//Это в основном модуле с формой
procedure Timer1.Timer(Sender: TObject)
var
WorkThread:Mythread;
begin
WorkThread:=MyThread.Create(False);
end;

Таймер каждые, допустим 5 минут будет запускать поток. Все это придется до ума довести (ну например нужно ли поток уничтожать или нет, и т.д.), хотя алгоритм такой.


Наверх

Титульная страница Поиск, карта сайта Написать письмо