Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.12.2009, 18:08
Horned_Reaper Horned_Reaper вне форума
Прохожий
 
Регистрация: 15.06.2009
Сообщения: 7
Репутация: 10
По умолчанию Indy и блокирующий режим.

При использовании методов Get и Post у компонента IdHTTP программа "замораживается" на те несколько секунд, пока запрос не будет выполнен. В "Indy in depth" упоминается компонент IdAntiFreeze, который должен убирать этот недостаток. Тем не менее, при размещении на форме моей программы этого компонента никаких изменений не наблюдается. Я что-то делаю не так?
Вот главный модуль:
Код:
unit Main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, ComCtrls, ExtCtrls, IdComponent, IdTCPConnection, IdTCPClient,
     IdHTTP, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdCookieManager,
     StdCtrls, XPMan, IdMultipartFormData;
type
   TMainForm = class(TForm)
      IdCookieManager: TIdCookieManager;
      IdAntiFreeze: TIdAntiFreeze;
      IdHTTP: TIdHTTP;
      Timer: TTimer;
      ProgressBar: TProgressBar;
      Button: TButton;
      procedure ButtonClick(Sender: TObject);
      procedure TimerTimer(Sender: TObject);
   private
   public
   end;
var MainForm: TMainForm;

implementation

{$R *.dfm}

procedure TMainForm.ButtonClick(Sender: TObject);
var response: TStringStream;
begin
   response := TStringStream.Create('');
   with IdHTTP.Request do begin
      UserAgent :=
         'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';
      Host := 'www.delphisources.ru;
      Accept := 'text/html, application/xml;q=0.9, application/xhtml+xml,'
         + ' image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
      AcceptLanguage := 'ru-RU,ru;q=0.9,en;q=0.8';
      AcceptCharSet := 'iso-8859-1, utf-8, utf-16, *;q=0.1';
      AcceptEncoding := 'deflate, gzip, x-gzip, identity, *;q=0';
      Referer := 'http://www.delphisources.ru/';
      Connection := 'Keep-Alive, TE';
   end;
   IdHTTP.HandleRedirects := true;
   IdHTTP.Get('http://www.delphisources.ru/', response);
end;

procedure TMainForm.TimerTimer(Sender: TObject);
begin
   if ProgressBar.Position >= ProgressBar.Max then
      ProgressBar.Position := 0;
   ProgressBar.Position := ProgressBar.Position + 1;
end;

end.
При нажатии кнопки хорошо видно, как прогрессбар на несколько секунд притормаживает.
Если это важно, у меня Borland Developer Studio 2006.
Да, и ещё. Я пытался разместить IdHTTP в потоке - ничего не изменилось.

Последний раз редактировалось Horned_Reaper, 27.12.2009 в 18:26.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter