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

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

Проблемы с TThread. [D6, WinME]


SergP ©   (2005-07-03 20:18:00) 

Провел єксперимент с таким кодом:


...
type
 TMyThread = class(TThread)
 public
   procedure Execute; override;
 end;

...
procedure TMyThread.Execute;
var
 i:integer;
begin
 FreeOnTerminate:=true;
 WaitWin.ProgressBar.Max:=200000;
 for i:=1 to 200000 do WaitWin.ProgressBar.Position:=i;
end;
...


Появилось несколько вопросов:
1. Когда я мышью держу окно за заголовок несколько секунд, затем отпускаю то за это время по прогресбару видно что поток не выполнялся.
Почему так?

2. Устанавливаю FreeOnTerminate:=true; но почему-то после завершения потока я могу обращаться к свойствам и методам объекта Thread:TMyThread и исключений не возникает. Почему? Ведь он по идее должен уничтожаться.

3. Как правильно прервать работу потока досрочно не проверяя в Execute свойство Terminated?


Eraser   (2005-07-03 20:29:00) [1]

Вернее никак, если не считать передачи в поток переменной, где указывается, что он может завершиться, т.е. например terminated.


Eraser   (2005-07-03 20:28:00) [2]

SergP ©   (03.07.05 20:26) [3]

Корректно - никак, не корректно - TerminateThread.


SergP   (2005-07-03 20:26:00) [3]


>  [2] Eraser ©   (03.07.05 20:23)
> SergP ©   (03.07.05 20:18)
>
> Что значит "досрочно"?


Ну может неправильно выразился. Имеется ввиду Прервать работу моего потока из основного потока.


Eraser   (2005-07-03 20:23:00) [4]

SergP ©   (03.07.05 20:18)

К визуальным компонентам VCL можно обращаться только из основного потока или использовать метод Synchronize (см. справку).

Как правильно прервать работу потока досрочно не проверяя в Execute свойство Terminated?

Если правильно, то никак.


Eraser   (2005-07-03 20:23:00) [5]

SergP ©   (03.07.05 20:18)

Что значит "досрочно"?


Наверх

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