Вниз
Скачать: CL | DM;

Проблемы с TThread.   Найти похожие ветки 

 
SergP ©   (2005-07-03 20:18) [0]

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


...
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:23) [1]

SergP ©   (03.07.05 20:18)

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

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

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


 
Eraser ©   (2005-07-03 20:23) [2]

SergP ©   (03.07.05 20:18)

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


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


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


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


 
Eraser ©   (2005-07-03 20:28) [4]

SergP ©   (03.07.05 20:26) [3]

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


 
Eraser ©   (2005-07-03 20:29) [5]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
3-1117788878
Woprosnik
2005-06-03 12:54
2005.07.18
Параметрический запрос.


9-1112730687
Yegorchic
2005-04-05 23:51
2005.07.18
Вывов текста в GLScene


1-1119787721
Руслана
2005-06-26 16:08
2005.07.18
Почему происходит ошибка?


4-1116539275
arous
2005-05-20 01:47
2005.07.18
Размещение папки "Быстрый запуск"


1-1120317333
Brack
2005-07-02 19:15
2005.07.18
Как програмно вывести N обьектов




   Наверх