Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 20:31   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
Смущение Параллельное скачивание или как добиться скачивания сразу двух файлов

Доброго времени суток, ув. программисты!
Нужна ваша помощь.

В программе необходимо сделать функцию скачивания нескольких файлов одновременно. Со скачиванием одного файла в потоке разобрался.

Вот так скачивается файл:
Код:
TCriricalThread = class(TThread)
  private

  protected

    procedure Execute; override;

  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  CriricalThread: TCriricalThread;
begin
  CriricalThread:=TCriricalThread.Create(true);
  CriricalThread.Resume;
end;

{ TCriricalThread }
procedure TCriricalThread.Execute;
var
  fs : TFileStream;
begin
  fs := TFileStream.Create('c:\1.txt',fmCreate or fmOpenReadWrite);
  form1.IdHTTP1.Get(form1.Edit1.Text,fs);
  MessageBox(Application.Handle,'Скачано','Готово',0);
  fs.Free;
end;
Но необходимо несколько одновременных скачиваний. Возможно ли это сделать вообще? Если да, подтолкните на мыслю... Потоки изучал.. не помогло. Ума не хватает

Надеюсь на вашу помощь .

Вот то, что должно получиться в итоге (В ListView добавление item'ов сделать не проблема):
Изображения
Тип файла: jpg Безымянный.jpg (10.9 Кб, 131 просмотров)
fezilk25 вне форума Ответить с цитированием
Старый 07.02.2011, 20:53   #2
exn
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 51
По умолчанию

Ну и создавай столько потоков, сколько нужно. )
exn вне форума Ответить с цитированием
Старый 07.02.2011, 20:55   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> изучал.. не помогло. Ума не хватает

Ума тебе здесь не добавят. При всем твоем желании.
Приобретение ума - процесс долгий, трудный и дорогой. Иногда неосуществимый.

Найми программиста. Если денег хватит.
mss вне форума Ответить с цитированием
Старый 07.02.2011, 21:10   #4
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

Насколько я знаю, на самом деле может выполняться одновременно только один поток.
1) как имитировать работу нескольких потоков?
2) Если использовать критические секции: имеется 5 потоков, т.е. загружаются 5 файлов. Пока качается 1 файл, остальные 4 потока будут "ждать", пока он докачается?
3) Один idhttp может загружать несколько файлов одновременно? Или его тоже динамически создавать?
fezilk25 вне форума Ответить с цитированием
Старый 07.02.2011, 22:13   #5
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

Можно сделать массив потоков.
Код:
var
  CriricalThread: array[0..10] of TCriricalThread;
begin
  CriricalThread[0] := TCriricalThread.Create(true);
1 IdHTTP = 1 файл
Но можно IdHTTP создать динамически в потоке.
Код:
var
  http: TIdHTTP;
begin
  http := TIdHTTP.Create(nil);
  ...
А вообще где-то месяц назад похожая тема обсуждалась.
kangreon вне форума Ответить с цитированием
Старый 07.02.2011, 22:22   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> на самом деле может выполняться одновременно только один поток.

Ничего подобного. В современных мультипроцессорных архитектурах реализованы полноценные параллельные вычислительные механизмы.
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет на скачивания торрет файлов serres Безопасность, Шифрование 1 16.11.2010 15:48
Счетчик скачивания файлов dronsapun PHP 3 17.09.2010 21:19
Чем отличается раздел public от простого? И как сделть функцию сразу для двух действий? TwiX Общие вопросы Delphi 1 06.10.2009 23:00
Контроль скачивания файлов kormax PHP 4 02.10.2008 15:39
Поиск файлов сразу с несколькими расширениями. Как??? Altera Общие вопросы Delphi 20 28.03.2008 01:43