|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.06.2010, 12:08 | #1 |
Регистрация: 14.09.2009
Сообщений: 4
|
IdFtp зависает в процесе работы :(
Delphi2009 + WinXP
IdFtp зависает в процесе работы вернее не виснет, а просто останавливается без генерации исключений (каких либо) останавливается на выполнении .List , .Get в случайных местах, в разных каталогах, на скачке разных файлов в случае List - просто останавливается выполнение в случае Get - создается файл получатель размер 0 и останавливается выполнеие то что при одном запуске может отработать нормально - может не отработать при след запуске пробовал работать как в основном потоке так и в отдельном в ReadTimeout, TransferTimeout прошу не тыкать носом - проверял в разных вариантах Может кто сталкивался - черканите как решили проблему. З.Ы. Ща смотрю в сторону использования не Инди компонент - мож кто чего посоветует. |
10.08.2010, 00:35 | #2 |
Новичок
Джуниор
Регистрация: 10.08.2010
Сообщений: 1
|
Компонент IdFTP включает полную поддержку протокола передачи файлов — FTP (File Transfer Protocol). Поддерживается пассивная и активная передача данных, а также такие операции, как GET и PUT, удаление директорий, получение квот, размеров файлов и каталогов. В своей работе TIdFTP использует класс TIdSimpleServer. Когда выполняется передача файла по протоколу FTP, вторичное соединение по протоколу TCP открыто для передачи данных и закрывается, когда данные были переданы. Такое соединение называется «канал передачи данных», уникальный для каждого передаваемого файла. С компонентом IdAntiFreeze другая история... Indy использует работу с сокетами в блокирующем режиме. Блокирующий режим подобен чтению-записи файла. При чтении данных или записи функция не возвращает управления до окончания операции. Отличие от работы с файлами состоит в том, вызов может быть более долгим, поскольку запрошенных данных еще нет, это зависит скорости, с какой работает сеть или модем. Вызов блокирующего сокета не возвращает управления, пока не выполнит свою задачу. Когда такой вызов делается в главном потоке приложения, приложение не может обрабатывать пользовательские сообщения. Из-за этого пользовательский интерфейс замораживается, не обновляются окна, и другие сообщения не могут быть обработаны пока управление не будет возвращено из блокирующего сокета. Короче, интерфейс подвисает... TIdAntiFreeze работает по внутреннему таймеру вне стека вызовов и вызывает Application.ProcessMessages по окончанию таймаута. Внешние вызовы к Indy продолжают оставаться блокирующими и поэтому работают точно также как и без использования
компонента TIdAntiFreeze. Использование TIdAntiFreeze позволяет получить все преимущества блокирующих сокетов, без из недостатков. Просто положи компонент IdAntiFreeze на форму и не меняй никаких его свойств - интерфейс не будет подвисать.. |
16.03.2012, 16:14 | #3 | |
Новичок
Джуниор
Регистрация: 16.04.2010
Сообщений: 1
|
Цитата:
|
|
14.01.2013, 17:58 | #4 |
Новичок
Джуниор
Регистрация: 14.01.2013
Сообщений: 1
|
У меня такая же ситуация. АнтиФриз не помогает. При выполнении List все замирает. Не помогает ничего, кроме убийства программы. Какие еще могут быть варианты?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
IDFTP не показывать ошибку. | sergeyrulit | Общие вопросы Delphi | 1 | 02.06.2010 02:33 |
idftp процесс скачивания | Gumer | Общие вопросы Delphi | 2 | 02.05.2010 15:18 |
Вопрос по idFTP | Johnson | Работа с сетью в Delphi | 3 | 09.11.2009 13:07 |
idFTP и TreeView | vitawt | Работа с сетью в Delphi | 3 | 21.02.2009 02:04 |
Проблема с IDFTP | esy | Работа с сетью в Delphi | 4 | 04.12.2008 18:22 |