![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильно "заморозить" TThread [D7, XP]
Alex_C © (2009-11-23 09:57:00)Какой командой правильно (в смысле чтоб не грузила основной процесс) приостановить на некоторое время выполнение TThread? Я пользовался Sleep, но вот возникли некоторые подзрения, что это не совсем верно :)
Alex_C (2009-11-23 10:33:00) [21]
> В период "сна" PoolInterval поток не реагирует ни на что.
Вот!
Осознаю! :) И хочу чтоб на момент "сна" он реагировал на Terminate!
Как правильно? WaitForSingleObject? А что тогда ставить первым параметром?
Leonid Troyanovsky (2009-11-23 10:28:00) [22]
> Alex_C (23.11.09 10:14) [3]
> Цель тут очень простая - надо через равные промежутки времени
> в ком-порт посылать комманду.
MS Windows не гарантирует ни равномерность, ни отсутствие пропусков,
бо, не является RTOS (exclude CE).
--
Regards, LVT.
Сергей М. (2009-11-23 10:22:00) [23]В период "сна" PoolInterval поток не реагирует ни на что.
Ты это осознаешь ?
Alex_C (2009-11-23 10:14:00) [24]
> Зависит от цели.
Цель тут очень простая - надо через равные промежутки времени в ком-порт посылать комманду.
Делаю так:
procedure TGetThread.Execute;
begin
FreeOnTerminate := True;
while not Terminated do
begin
Sleep(PoolInterval);
WriteToCOMPort;
end;
Сергей М. (2009-11-23 10:02:00) [25]Почему не верно ?
Вполне нормальный способ, имеющий право на жизнь наравне с [Msg]WaitFor-функциями
Leonid Troyanovsky (2009-11-23 10:01:00) [26]
> Alex_C (23.11.09 09:57)
> Какой командой правильно (в смысле чтоб не грузила основной
> процесс) приостановить на некоторое время выполнение TThread?
Зависит от цели.
--
Regards, LVT.