|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
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. |