|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.12.2016, 23:14 | #1 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
Как принудительно завершить поток скачивания
Пишу утилиту по скачиванию файлов. Нужно, чтобы по нажатию кнопки Pause закачка прекращалась, без выхода из программы (часть с дозакачкой уже мной написана). Как принудительно завершить поток, созданный функцией CreateThread?
Поток создается так: Thread=CreateThread(NULL,0,ThreadFu n,&ThreadData, 0, 0); Принудительно он завершается так: TerminateThread(Thread,0); Это приводит к зависанию программы. В принципе в хелпе и не советуют использовать данный способ из-за непредсказуемости поведения. Нужно что-то другое. |
10.12.2016, 09:58 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Нужно чтоб сам поток проверял не требуется ли от него завершится.
|
10.12.2016, 11:29 | #3 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
В одном потоке в цикле идет скачивание неск. файлов и поверка необ-ти завершения. Как завершить поток когда уже запустился шаг цикла? Файлы качаются большого размера. Если поток ушел в сеть, то что получается его уже никак не вернуть (а мне и надо его прервать)?
|
10.12.2016, 11:29 | #4 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
А можно ли как-то прервать работу функции get компонента IdHTTP?
|
10.12.2016, 11:51 | #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
ЛС отключены Аларом. |
10.12.2016, 19:18 | #6 | |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
Цитата:
Всем спасибо! |
|
11.12.2016, 17:43 | #7 |
Пользователь
Регистрация: 15.10.2016
Сообщений: 21
|
Новая незадача. Напомню, поток у меня создается так: Thread=CreateThread(NULL,0,ThreadFu n,&ThreadData, 0, 0);
И я хочу обеспечить совместимость с Маком. Но оказывается функция CreateThread не идет под Мак, билдер на нее ругается. Куда копать?) |
11.12.2016, 18:13 | #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 |