![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
![]()
создаю так поток
Код:
Код:
потом поток останавливаю командой Код:
Код:
когда я снова запускаю поток, вызываю метод Код:
Скажите пожалуйста в чем дело?
Если помог нажми на весы
![]() |
![]() |
![]() |
![]() |
#2 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
![]() Цитата:
и потом запустить
95% сбоев и ошибок приложений, находится в полу метрах от монитора
![]() |
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
может потому что поток не освобождается? Ведь у вас:
FreeOnTerminate:=false |
![]() |
![]() |
![]() |
#4 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
![]()
да, не освобождаеться, но я его и создаю только один раз при запуске программы, но можно каждый раз создавать поток перед запуском тогда FreeOnTerminate:=true сделать. я просто хотел понять почему не работает именно так
Если помог нажми на весы
![]() |
![]() |
![]() |
![]() |
#5 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
![]()
повторяю попробуй остановить pott.suspend;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
![]() |
![]() |
![]() |
![]() |
#6 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
![]()
pott.suspend приостанавливает поток, но не завершает. но я не пробывал
Если помог нажми на весы
![]() |
![]() |
![]() |
![]() |
#7 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
![]()
во, вот вам и ответ на Ваш вопрос "как запустить поток второй раз".
Приостановили - Запустили - не нужен поток - удалили, как Вы указали выше
95% сбоев и ошибок приложений, находится в полу метрах от монитора
![]() |
![]() |
![]() |
![]() |
#8 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
![]()
а я думал можно полностью остановить поток чтоб завершилась процедура Execute, не удаляя его, и потом запустить, не создавая заново
Если помог нажми на весы
![]() |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
TThead.Terminate - не завершает работу потока, а всеголишь ставить Tthread.terminated:=True
А вам в потоке нужно сделать If Terminated then Exit; И если поток не вырубается, значит где-то есть цикл, в чьём теле не выполняется выше приведённая проверка, и метод отрабатывает своё, только после этого даёт потоку прибиться. Либо поток вырубается, однако вы не знаете об этом. Если не знаете, то дайте событие OnTerminate, и там сообщите себе о том, что поток прибился. Последний раз редактировалось Человек_Борща; 02.10.2011 в 22:40. |
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]() Цитата:
А у вас поток уже нет вообще. Он уже "отстрелялся". Завершён он. Всё, нечему продолжать работу. Что с этим делать - пересоздать поток. С учётом того, что поток у вас уже завершён - это копеечная работа (выделить десяток-другой байт). А можно изначально не выходить из потока (поток не завершается). Пусть поток ждёт ваших команд. Только работать с ним тогда надо не через Suspend/Resume.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как запустить приложение несколько раз? | Trip | Помощь студентам | 2 | 04.09.2011 18:28 |
Как запустить одно приложение много раз ? | Jugger | Операционные системы общие вопросы | 2 | 08.03.2011 22:07 |
Как запустить форму только один раз | artemavd | Общие вопросы Delphi | 9 | 28.11.2010 16:43 |
КАК в DELPHI сделать второй поток ( чтобы pop3 с прогой не вис) | M@g soft | Помощь студентам | 0 | 11.05.2009 18:12 |
Как остановить поток а потом снова запустить? | Des | Общие вопросы Delphi | 5 | 03.05.2009 12:35 |