Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2010, 22:29   #1
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
Вопрос потоки

как узнать завершен ли поток?
если при создании я ставлю свойство FreeOnTerminate:=true он должен сам себя удалять при завершении но когда поток завершается я проверяю его что он существует не равен nil
и после завершения потока свойство почему то Terminated = false
пауэрлифтинг вне форума Ответить с цитированием
Старый 22.05.2010, 22:32   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

насчет проверки то это потому что указатель на обьект TThread никто не отменял.
можно через TThread.Terminated(тогда FreeOnTerminate:=false)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.05.2010, 22:59   #3
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

у меня все равно даже если FreeOnTerminate:=false после завершения потока Terminated = false
пауэрлифтинг вне форума Ответить с цитированием
Старый 22.05.2010, 23:02   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

значит в конце Execute ставьте его в true
Terminated:=true(точнее просто делаем Terminate)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 22.05.2010 в 23:16.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.05.2010, 23:49   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

попробуй проверять заверён ли поток...

создай процедуру:
Код:
procedure TForm1.ThrOnExit(Sender:TObject);
begin
ShowMessage('Поток успешно завершён!');
end;
Далее в процедуре вызова:
Код:
procedure CallMyThread();
var
   MTHR:TMyThread;
begin
   MTHR:=TMyThread.Create(true); //True- создаём и запускаем поток.. | False - создаём но не запускаем поток...ожидаем Resume..
   MTHR.FreeOnTerminate:=True;
   MTHR.Priority:=tpHigh;
   MTHR.OnTerminate:=ThrOnExit; //<<= при завершении потока вам выскочит сообщение...
   MTHR.Resume;
Человек_Борща вне форума Ответить с цитированием
Старый 23.05.2010, 14:19   #6
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Поиск рулит... http://forum.vingrad.ru/forum/topic-...y480380/0.html Всё что нужно знать начинающему! По крайней мере мне хватило.)
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки StudeHt Помощь студентам 1 06.05.2010 16:26
потоки Владимир1988 Помощь студентам 0 08.02.2010 23:12
Потоки в С++ BioS Общие вопросы C/C++ 2 09.01.2010 21:34
Потоки AidarBik Win Api 2 04.08.2008 10:00