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

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

Как завершать поток


alex-drob ©   (2005-08-15 15:27:00) 

К примеру есть код:

procedure TMyThread.Execute;
begin
while not Terminated do
begin
...
end
end;


При выполнении MyThread.Terminateпоток перестанет работать. А MyThread.Freeнужно вызывать?

И ещё, если написать так:

procedure TMyThread.Execute;
begin
while (i<100) do
begin
inc(i);
...
end
end;


То поток завершиться правельно?


alex-drob   (2005-08-15 15:49:00) [1]


> while not Terminated and (i < 100),

Я так и хотел написать, это я привёл к примеру.

Спасибо!


Leonid Troyanovsky   (2005-08-15 15:41:00) [2]


> alex-drob ©   (15.08.05 15:27)  


> При выполнении MyThread.Terminate поток перестанет работать.

Поток перестанет работать, когда он выйдет из функции потока,
т.е., в данном случае, после проверки Terminated.

> А MyThread.Free нужно вызывать?

Зависит от установки FreeOnTerminated.

> while (i<100) do

> То поток завершиться правельно?

Плохо, что i - глобальная.
А правильнее было б while not Terminated and (i < 100),
бо тело цикла может быть и громоздким.

--
Regards, LVT.


Наверх

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