|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.10.2011, 21:22 | #1 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
как запустить поток второй раз
создаю так поток
Код:
Код:
потом поток останавливаю командой Код:
Код:
когда я снова запускаю поток, вызываю метод Код:
Скажите пожалуйста в чем дело?
Если помог нажми на весы
|
02.10.2011, 21:29 | #2 | |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Цитата:
и потом запустить
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
|
02.10.2011, 21:33 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
может потому что поток не освобождается? Ведь у вас:
FreeOnTerminate:=false |
02.10.2011, 21:37 | #4 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
да, не освобождаеться, но я его и создаю только один раз при запуске программы, но можно каждый раз создавать поток перед запуском тогда FreeOnTerminate:=true сделать. я просто хотел понять почему не работает именно так
Если помог нажми на весы
|
02.10.2011, 21:42 | #5 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
повторяю попробуй остановить pott.suspend;
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
02.10.2011, 21:46 | #6 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
pott.suspend приостанавливает поток, но не завершает. но я не пробывал
Если помог нажми на весы
|
02.10.2011, 21:50 | #7 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
во, вот вам и ответ на Ваш вопрос "как запустить поток второй раз".
Приостановили - Запустили - не нужен поток - удалили, как Вы указали выше
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
02.10.2011, 21:59 | #8 |
нажмите + на весах
Пользователь
Регистрация: 10.11.2010
Сообщений: 30
|
а я думал можно полностью остановить поток чтоб завершилась процедура Execute, не удаляя его, и потом запустить, не создавая заново
Если помог нажми на весы
|
02.10.2011, 22:36 | #9 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
TThead.Terminate - не завершает работу потока, а всеголишь ставить Tthread.terminated:=True
А вам в потоке нужно сделать If Terminated then Exit; И если поток не вырубается, значит где-то есть цикл, в чьём теле не выполняется выше приведённая проверка, и метод отрабатывает своё, только после этого даёт потоку прибиться. Либо поток вырубается, однако вы не знаете об этом. Если не знаете, то дайте событие OnTerminate, и там сообщите себе о том, что поток прибился. Последний раз редактировалось Человек_Борща; 02.10.2011 в 22:40. |
02.10.2011, 22:47 | #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 |