Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Внизблокируется Интернет при использовании компонента IdHttp Найти похожие ветки
← →
Delphi5.01 (2003-11-30 22:08) [0]Доброе время суток уважаемые программисты!
Почему при использовании компонента IdHttp и его функции Get(Url: String), блокируется Интернет а именно если в программе до этого было запушено закачивания файла то оно приостанавливается до того времени пока новое закачивание не закончится! Как можно заставить работать параллельно нескольким закачкам! Возможно есть смысл использовать потоки, и каждое действие разместить в разные потоки (но в этом я не вижу решение проблемы, по моему проблема не решится используя потоки! или я не прав!).
Спасибо.
← →
Digitman (2003-12-01 09:05) [1]
> или я не прав
не прав. как раз доп.код.потоки и решают задачу
← →
nikkie (2003-12-01 14:15) [2]я бы не стал говорить, что "блокируется Интернет", если блокируется всего-навсего таже самая программа
← →
Delphi5.01 (2003-12-01 21:45) [3]Spasibo za pomosh popitaus reshit deolo potokami! esli chto ne budet rabotat to nadeus ia smogu obratitsa k vam? :-)))
Spasibo za udelonnoe vnimanie!
← →
Delphi5.01 (2003-12-03 23:20) [4]Доброе время суток!
К сожалению результат не получен! Привожу пример:
Get:=TDownloader.Create(True);
Get.SetUrlValues(" http://welcome.online.ge/vdialpro.html","","",2);
Get.Priority:=tpIdle;
Get.Resume;
проблема та же, сначала закачивается один файл, а уж потом другой, не смотря на то что запушено два потока, по какой-то причине второй поток (а так не должно быть) начинает работать только после закачивания первого!
Привожу текст потока:
procedure TDownloader.DoWork;
begin
GetText(PUrl,PUserName,PPassword,PThreadIndex);
end;
procedure TDownloader.Execute;
begin
Synchronize(DoWork);
end;
procedure TDownloader.SetUrlValues(Url: String;
UserName: String;
Password: String;
ThreadIndex: Integer);
begin
PUrl:=Url;
PUserName:=UserName;
PPassword:=Password;
PThreadIndex:=ThreadIndex;
end;
Пожалуйста помогите решить проблему!
Спасибо за помощь
← →
nikkie (2003-12-04 00:10) [5]никогда так не делай:
procedure TDownloader.Execute;
begin
Synchronize(DoWork);
end;
скажи пожалуйста, ты этот код из книжки Архангельского взял?
← →
Delphi5.01 (2003-12-04 07:11) [6]Доброе время суток програмеры!
Я этот код взял с примера в интернете там так было написано! А что здесь и есть ошибка? Может подскажеш что надо писать? Например
while not Terminated do
Synchronize(DoWork);
Но мне кажется в моём случае в этом нет смысла по той причине что процедура испольняется только один раз.
Спасибо!
← →
Геннадий (2003-12-04 07:13) [7]У тебя процедура, которая делает полезную работу находится в самом потоке (реализованиа в его классе). По-моему, она должна быть описана в другом классе, обычно в public твоей формы. Или нет?
← →
Delphi5.01 (2003-12-04 16:05) [8]Доброе время суток!
Мне кажется вы не совсем правы, какой смысл имеет переместить процедуру из потока в главную программу(это толь мои убежденияб но я все равно проверю)? Я убрал её специально чтоб не загрязняла главный модуль!
По моему надо искать другую причину, основываясь на отве Никки мы можем сказать что проблемма здесь
procedure TDownloader.Execute;
begin
Synchronize(DoWork);
end;
но к сожалению не приведен правильный код!
Спасибо за уделлённое время Генадий!
Если у кого есть еще кокиета соображения по этому поводу пожалуста высказывайте!
← →
nikkie (2003-12-04 20:52) [9]>но к сожалению не приведен правильный код!
звучат фанфары, вся публика встала, аплодисменты и крики виват - встречайте! правильный код!
procedure TDownloader.Execute;
begin
DoWork;
end;
не из книжки, значит... не подтверждается тезис Игоря Шевченко.
← →
Delphi5.01 (2003-12-05 07:12) [10]Солют, браво, бравооооо, браво мастро!
Спасибо огромное!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c