小弟学艺不精,第一次写多线程的程序,怎样才能提高它的执行效率,突出多线程的优点(现在还是会失去响应喔)....功能就是向ID为一个序列(从startnum到finishnum,由edit输入)的用户页面留言~~~
--------------------------------
unit main;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, ComCtrls;type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Edit_email: TEdit;
    Edit_pass: TEdit;
    Button1: TButton;
    Label_email: TLabel;
    Label_pass: TLabel;
    Memo1: TMemo;
    Edit_sID: TEdit;
    Edit_fID: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Button3: TButton;
    IdHTTP1: TIdHTTP;
    UpDown1: TUpDown;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
  private
    { Private declarations }
  public
    { Public declarations }
  end;type
  TThread1 = class(TThread)
  private  protected
    procedure leaveMSG;
    procedure Execute; override;
  public
    constructor create;
end;type
  TThread2 = class(TThread)
  private  protected
    procedure login;
    procedure Execute; override;
  public
    constructor create2;
end;var
  Form1: TForm1;
  stri,surl,ak:string;
  startNum:integer;
  finishNum:integer;
  i:integer=0;var
  iThrdCnt:integer   ;
  Th:array[1..10]   of  TThread1;
  th2:TThread2;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
th2:=tthread2.create2;
th2.Resume;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
  IdHTTP1.HandleRedirects:=True;
  IdHTTP1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Maxthon)';
  IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';
end;constructor Tthread1.create;
begin
inherited Create(True);
FreeOnTerminate := False;
end;constructor Tthread2.create2;
begin
inherited Create(True);
FreeOnTerminate := False;
end;procedure TThread2.login;
var
  Params: TStrings;
  Response:TStringStream;
  HTML,ID,str:String;
  po: integer;
begin
      Response:=TStringStream.Create('');
      sUrl:='http://xxxxxxx.com/Login.do';
      Params:=TStringList.Create;
      form1.Caption:='正在登录...';
      try
          Params.Add('email='+form1.Edit_email.Text);
          Params.Add('password='+form1.Edit_pass.Text);
          form1.IdHTTP1.Post(sUrl,Params,Response);
          HTML:=utf8toansi(Trim(Response.DataString));
      if pos('登录失败',HTML)>0 then
        form1.Caption:='登录失败!'
      else
        begin        po:=pos('showrelation',HTML)+12;
        str:=copy(HTML,po,po+12);
        ID:=copy(str,1,pos('"',str)-1);
        HTML:=form1.idhttp1.get('http://xxxxxxx.com/getuser.do?id='+ID);
        HTML:=utf8toansi(HTML);
        po:=pos('name="ak"',HTML)+17;
        ak:=copy(HTML,po,po+32);
        ak:=copy(ak,1,32);
        form1.Caption:='登录成功! ID:'+ID+' ak值:'+ak;
        end;
      finally
          Params.Free;
          th2.Terminate;
          th2.Destroy;
      end;end;procedure TThread1.leaveMSG;
var
  t:TstringList;
begin
      stri:=inttostr(i);
      i:=i+1;
      t:=TStringList.Create;
      try
          t.Add('curpage=');
          t.Add('from=main');
          t.Add('id='+stri);
          t.Add('cc='+stri);
          t.Add('ak='+ak);
          t.Add('body='+ansitoUTF8(form1.Memo1.Text));
          form1.IdHTTP1.Post(sUrl,t);
      finally
      t.Free;
      end;
end;procedure TThread1.Execute;
begin
while i < finishNum+1 do
Synchronize(leaveMSG);
end;procedure TThread2.Execute;
begin
login;
end;procedure TForm1.Button2Click(Sender: TObject);
var
  j:integer;
begin
i:=strtoint(Edit_sID.Text);
finishNum:=strtoint(Edit_fID.Text);
sUrl:='http://xxxxxx.com/gossip.do';
iThrdCnt:=Updown1.Position;
for   j:=1   to   iThrdCnt   do
  begin
   th[j]:=TThread1.Create;
   th[j].Resume;
  end;
end;procedure TForm1.Button3Click(Sender: TObject);
var
  j:integer;
begin
for   j:=1   to   iThrdCnt   do
  begin
   th[j].Terminate;
   th[j].Destroy;
  end;
end;procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  label3.Caption:=inttostr(UpDown1.Position);
end;end.
--------------------------------