Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как избавится от подвисания!


Автор: Desperate 29.12.2006, 18:12
Приветствую Вас! Такая проблема, Когда качаю файл с помощью WinInet функций, происходит намертво зависание, пока файл не докачается, как от этого избавиться? И как можно прервать процесс закачки?

Автор: ilyalyu 29.12.2006, 19:36
Использовать поток (TThread).

> И как можно прервать процесс закачки?

Поискать что-нибудь типа метода disconnect smile

Автор: Matematik 29.12.2006, 20:06
см. 
InternetSetStatusCallback()

Автор: Snowy 29.12.2006, 21:00
Либо использовать в асинхронном режиме, либо выносить в отдельный тред.
Второе, ИМХО, лучше.

Автор: Desperate 29.12.2006, 21:39
Цитата

либо выносить в отдельный тред


Это как? Сорри, не очень понимаю!

Автор: Matematik 29.12.2006, 21:48
Цитата(Desperate @ 29.12.2006,  21:39)
Цитата

либо выносить в отдельный тред


Это как? Сорри, не очень понимаю!

http://forum.vingrad.ru/topic-60076.html

Автор: Snowy 30.12.2006, 12:06
Я тут как-то набросал компонентик.
Это пока черновик, но с http и https вроде работает.
Бросаешь на форму, назначаешь события, даёшь комманду вида
Код
  inet1.Get('http://forum.vingrad.ru/');
Когда закачается, выскочит событие OnCompliteDL.
Пока сыровато, но работает.
Позже доработаю пул, докачку и ftp.

Автор: Desperate 30.12.2006, 14:07
А для WinInet работает?  А то у меня тут такое дело, ссылка на файл заканчивается так ...action=download&id=21254
если через функции Indy то не качается, ошибка, а если WinInet то свободно все качается! 

Автор: Snowy 30.12.2006, 14:29
Цитата(Desperate @  30.12.2006,  14:07 Найти цитируемый пост)
А для WinInet работает?
На нём и написано smile

Автор: Desperate 30.12.2006, 16:59
Да, это я внимания не обратил! smile

Автор: Mephisto 24.1.2007, 11:40
Snowy, у тебя есть утечка в компоненте.. smile

Автор: Snowy 24.1.2007, 11:56
Цитата(Mephisto @  24.1.2007,  11:40 Найти цитируемый пост)
Snowy, у тебя есть утечка в компоненте.. 
Возможно.
Это совсем альфа.
Довести его до полноценной версии просто руки не доходят.
Но я над этим работаю.

Автор: creas0ft 6.3.2007, 19:11
А как бы Post к нему и прокси все же прикрутить?!

Автор: Snowy 6.3.2007, 20:41
POST - без проблем: http://forum.vingrad.ru/index.php?showtopic=136476&view=findpost&p=1040527
А вот прокси я ещё не отработал.
У меня нет прокси - нужно ставить.
Всё руки не доходят...

Автор: MetalFan 20.11.2007, 18:19
Цитата(Snowy @  29.12.2006,  21:00 Найти цитируемый пост)
Либо использовать в асинхронном режиме, либо выносить в отдельный тред.
Второе, ИМХО, лучше. 

простите за шевеление трупов, но почему второе лучше???

Автор: Snowy 20.11.2007, 18:54
Потому что надёжней и строго подчиняется логике программы.
А вообще на данную тему немало копий сломано.
Собственно причина та же, что и у асинхронных сокетов.
В частности в книге по Indy с особой любовью расписано, почему асинхронная работа отстой.
Да и во многих статьях по сокетам расписывают минусы микрософтовского асинхронного механизма.
У меня нет желания ворошить то, чего в инете и так вагонами написано.

Автор: Desperate 20.11.2007, 21:38
Да через Трэды нормал все! 

Автор: MetalFan 20.11.2007, 22:20
Snowy, эх, хотябы пару ссылок... очень интересно  smile 

Автор: aktuba 20.11.2007, 22:37
Цитата(Mephisto @  24.1.2007,  12:40 Найти цитируемый пост)
Snowy, у тебя есть утечка в компоненте.. smile 


Цитата(Snowy @  24.1.2007,  12:56 Найти цитируемый пост)
Возможно.
Это совсем альфа.
Довести его до полноценной версии просто руки не доходят.
Но я над этим работаю.


Snowy, я же тебе на эту тему писал... Счас уже и не вспомню что именно... Насколько помню - не было освобождения строк...


Автор: Snowy 21.11.2007, 03:03
Ну, код открытый. Мог бы и поправить ;-)
У меня просто на всё рук не хватает. Точнее руки smile

Автор: aktuba 21.11.2007, 21:06
Цитата(Snowy @  21.11.2007,  04:03 Найти цитируемый пост)
Ну, код открытый. Мог бы и поправить ;-)

Так я вроде даже писал тебе... Сейчас уже трудно вспомнить... Постараюсь на днях еще раз посмотреть что и где правил...

Автор: MetalFan 3.12.2007, 20:06
Цитата(Snowy @  20.11.2007,  18:54 Найти цитируемый пост)
У меня нет желания ворошить то, чего в инете и так вагонами написано. 

и все таки хотелось бы аргументы...

Автор: aktuba 3.12.2007, 21:49
Цитата(MetalFan @  3.12.2007,  21:06 Найти цитируемый пост)
и все таки хотелось бы аргументы... 

Такой аргумент подойдет: в треде все действия происходят в одном месте, а в асинхронном запросе в разных местах, т.е. запрос происходит в одной части кода, а обработка результата в другой. Эту уже само по себе минус (во всяком случае, для меня). В дополнение - каким способом проще сделать последовательные запросы? Т.е., когда последующий запрос зависит от результатов предыдущего. Имхо, в треде проще...

Автор: MetalFan 3.12.2007, 23:50
aktuba, в каких таких разных местах? )) в разных потоках всмысле?
ну это да...
лично для себя я считаю минусом асинх.режима в вининет то, что в итоге всеравно приходится в своем (собственноручно созданном) потоке данные читать...
так что в принципе согласен, что асинхронность функциям ВинИнета пользы не особо добавляет(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)