Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Вниз

Проблемы с 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 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.038 c
4-1116836805
cautur
2005-05-23 12:26
2005.07.18
Имя компьютера


14-1119873163
_Anton
2005-06-27 15:52
2005.07.18
Динамичаски добавить поле


4-1116646439
gdaujk
2005-05-21 07:33
2005.07.18
Получение списка запущенных процессов


1-1119946584
rolex
2005-06-28 12:16
2005.07.18
Как сохранить/загрузить содержимое ListView в файл?


4-1116942710
Aleksandr.
2005-05-24 17:51
2005.07.18
Будет ли работать PostMessage из dll?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский