indy GET скорость загрузки - PullRequest
       54

indy GET скорость загрузки

5 голосов
/ 11 декабря 2010

Добро пожаловать,

Мне нужно создать подпись с информацией о скорости загрузки в моем приложении, используя indy http get componenttent.

На мой взгляд, я нашел простое решение.

На рабочем мероприятии я получу фактический прогресс загрузки (размер) и сравню его с предыдущим чтением.(например каждые 5 секунд).Размер текущего минус предыдущий (5 секунд раньше, сохраненный в глобальном var) разделите на 5 секунд * 8, и я получу скорость.Если фактический размер равен предыдущему, тогда скорость всегда равна 0.

Итак, я хочу начать кодирование, но я обнаружил проблему в простой функции, называемой odwork.

procedure TForm1.HttpWork(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
  begin
    showmessage('hello im herre');
end;  

Проблема в том, что эта функция не вызывается... Я не знаю, почему.

Я загружаю файл размером 100 МБ, и я не вижу никакого шоу-сообщения ...

Есть идеи?Привет

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

События OnWork ... генерируются, только если метод BeginWork () соединения был вызван заранее. Многие из методов чтения / записи Indy не вызывают этого автоматически. Однако TIdHTTP считывает / записывает данные тела запроса / ответа с использованием объектов TStream, а методы TStream подключения / чтения / записи внутренне вызывают BeginWork (), поэтому вы определенно получите события OnWork ..., запущенные во время операций HTTP.

0 голосов
/ 15 декабря 2010

Я бы сказал, что ваше событие HTTPWork не подключено к компоненту.Если у вас есть компонент HTTP в форме, откройте свойства и дважды щелкните событие OnWork, а затем вставьте ShowMessage ... оно должно отобразиться.

0 голосов
/ 11 декабря 2010

Вы также назначаете httpwork для компонента?onprogress или onwork, как это называется?

Кроме того, используйте метку, а не модальный компонент, который не будет возвращаться до тех пор, пока вы не нажмете, поскольку это может прервать поток загрузки.

...