Привет всем. Нужна помощь в реализации POST запроса к сайту многопоточно. Code: unit Unit13; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, StdCtrls; type TForm1 = class(TForm) IdHTTP1: TIdHTTP; Button1: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; tnew = class(tthread) private s:string; { private declarations } procedure addstr; protected procedure execute; override; end; var Form1: TForm1; http1:tidhttp; a:longint; IdHTTP1: TIdHTTP; new1, new2: tnew; implementation {$R *.dfm} procedure tnew.addstr; var params,responseres:tstringlist; label method; begin params:=TStringList.Create; responseres:=TStringList.Create(); idhttp1:=TidHTTP.Create(nil); try //здесь параметры responseres.text:=IDHTTP1.Post('Сайт',params); //Тут идет условие и отсылка в мемо finally params.free; responseres.free; responseres:=nil; params:=nil; end; end; procedure tnew.execute; begin synchronize(addstr); end; procedure TForm1.Button1Click(Sender: TObject); begin new1 := tnew.create(true); new1.freeonterminate := true; new1.s := '1 thread'; new1.priority := tplowest; new2 := tnew.create(true); new2.freeonterminate := true; new2.s := '2 thread'; new2.priority := tptimecritical; new1.resume; new2.resume; end; end. Я попытался реализовать это в два потока, но отправка POST все равно идет по очереди, т.е. пока первый запрос не выполнится, второй не пойдет. Подскажите, как лучше реализовать?
Code: type PSTRUCT = ^STRUCT; STRUCT = record i,j: cardinal; end; var tid: cardinal; SLemail, SLpass: TstringList; procedure Multi(param: Pointer); stdcall; var first, second: cardinal; full: string; begin first:=integer( PSTRUCT(param).i); second:=integer( PSTRUCT(param).j); MessageBox(0,Pchar(SLEmail.Strings[first]),Pchar(SLpass[second]),0); end; procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; _struct: PSTRUCT; begin SLEmail:=TStringList.Create; SLEMail.Clear; SLpass:=TStringList.Create; SLPass.Clear; SLEmail.Add('1@mail.ru'); SLEmail.Add('2@mail.ru'); SLpass.Add('password1'); SLPass.Add('password2'); for i:=0 to SLEmail.Count -1 do for j:=0 to SLPass.Count -1 do begin Application.ProcessMessages; New(_struct); _struct^.i:=i; _struct^.j:=j; createthread(nil,0,@Multi,_struct,0,tid); end; end; Создаются потоки, и в каждом потоке создается мессаг содержащий email; password, которые занесены в список. Процедура Multi обработчик потока, модифицируй его по своему усмотрению. С indy не пробал, т.ч., попробуй так, если даже щас будут задержки, то придется писать POST запрос на сокетах...