![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потоки + таймер?
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 минут будет запускать поток. Все это придется до ума довести (ну например нужно ли поток уничтожать или нет, и т.д.), хотя алгоритм такой.