![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
блокируется Интернет при использовании компонента IdHttp [D7, WinXP]
Delphi5.01 © (2003-11-30 22:08:00)
Доброе время суток уважаемые программисты!
Почему при использовании компонента IdHttp и его функции Get(Url: String), блокируется Интернет а именно если в программе до этого было запушено закачивания файла то оно приостанавливается до того времени пока новое закачивание не закончится! Как можно заставить работать параллельно нескольким закачкам! Возможно есть смысл использовать потоки, и каждое действие разместить в разные потоки (но в этом я не вижу решение проблемы, по моему проблема не решится используя потоки! или я не прав!).
Спасибо.
Delphi5.01 (2003-12-05 07:12:00) [1]
Солют, браво, бравооооо, браво мастро!
Спасибо огромное!
nikkie (2003-12-04 20:52:00) [2]
>но к сожалению не приведен правильный код!
звучат фанфары, вся публика встала, аплодисменты и крики виват - встречайте! правильный код!
procedure TDownloader.Execute;
begin
DoWork;
end;
не из книжки, значит... не подтверждается тезис Игоря Шевченко.
Delphi5.01 (2003-12-04 16:05:00) [3]
Доброе время суток!
Мне кажется вы не совсем правы, какой смысл имеет переместить процедуру из потока в главную программу(это толь мои убежденияб но я все равно проверю)? Я убрал её специально чтоб не загрязняла главный модуль!
По моему надо искать другую причину, основываясь на отве Никки мы можем сказать что проблемма здесь
procedure TDownloader.Execute;
begin
Synchronize(DoWork);
end;
но к сожалению не приведен правильный код!
Спасибо за уделлённое время Генадий!
Если у кого есть еще кокиета соображения по этому поводу пожалуста высказывайте!
Геннадий (2003-12-04 07:13:00) [4]
У тебя процедура, которая делает полезную работу находится в самом потоке (реализованиа в его классе). По-моему, она должна быть описана в другом классе, обычно в public твоей формы. Или нет?
Delphi5.01 (2003-12-04 07:11:00) [5]
Доброе время суток програмеры!
Я этот код взял с примера в интернете там так было написано! А что здесь и есть ошибка? Может подскажеш что надо писать? Например
while not Terminated do
Synchronize(DoWork);
Но мне кажется в моём случае в этом нет смысла по той причине что процедура испольняется только один раз.
Спасибо!
nikkie (2003-12-04 00:10:00) [6]
никогда так не делай:
procedure TDownloader.Execute;
begin
Synchronize(DoWork);
end;
скажи пожалуйста, ты этот код из книжки Архангельского взял?
Delphi5.01 (2003-12-03 23:20:00) [7]
Доброе время суток!
К сожалению результат не получен! Привожу пример:
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;
Пожалуйста помогите решить проблему!
Спасибо за помощь
Delphi5.01 (2003-12-01 21:45:00) [8]
Spasibo za pomosh popitaus reshit deolo potokami! esli chto ne budet rabotat to nadeus ia smogu obratitsa k vam? :-)))
Spasibo za udelonnoe vnimanie!
nikkie (2003-12-01 14:15:00) [9]
я бы не стал говорить, что "блокируется Интернет", если блокируется всего-навсего таже самая программа
Digitman (2003-12-01 09:05:00) [10]
> или я не прав
не прав. как раз доп.код.потоки и решают задачу