![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
![]()
Пишу утилиту по скачиванию файлов. Нужно, чтобы по нажатию кнопки Pause закачка прекращалась, без выхода из программы (часть с дозакачкой уже мной написана). Как принудительно завершить поток, созданный функцией CreateThread?
Поток создается так: Thread=CreateThread(NULL,0,ThreadFu n,&ThreadData, 0, 0); Принудительно он завершается так: TerminateThread(Thread,0); Это приводит к зависанию программы. В принципе в хелпе и не советуют использовать данный способ из-за непредсказуемости поведения. Нужно что-то другое. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
Нужно чтоб сам поток проверял не требуется ли от него завершится.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
![]()
В одном потоке в цикле идет скачивание неск. файлов и поверка необ-ти завершения. Как завершить поток когда уже запустился шаг цикла? Файлы качаются большого размера. Если поток ушел в сеть, то что получается его уже никак не вернуть (а мне и надо его прервать)?
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
![]()
А можно ли как-то прервать работу функции get компонента IdHTTP?
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Так легко гуглится же куча вариантов.
Например http://stackoverflow.com/a/9537620/964478 с OnWork или просто вызов Disconnect (из другого/основного потока)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
![]() Цитата:
Всем спасибо! |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
![]()
Новая незадача. Напомню, поток у меня создается так: Thread=CreateThread(NULL,0,ThreadFu n,&ThreadData, 0, 0);
И я хочу обеспечить совместимость с Маком. Но оказывается функция CreateThread не идет под Мак, билдер на нее ругается. Куда копать?) |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Ну так естественно WinAPI есть только на винде.
Наверняка в билдере есть свои обертки, TThread и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Принудительно уничтожить поток(TThread) с корректным высвобождением памяти | Pcrepair | Общие вопросы Delphi | 3 | 05.06.2013 01:49 |
Как экстренно завершить поток? | hon | Общие вопросы Delphi | 2 | 28.08.2012 21:18 |
Indy, принудительно завершить запрос | phphel | Работа с сетью в Delphi | 1 | 28.07.2011 14:26 |
Как правильно завершить поток | cosmic_call | Общие вопросы Delphi | 2 | 13.02.2011 05:32 |
Как правильно завершить поток | Des | Общие вопросы Delphi | 5 | 08.05.2009 20:56 |