Тема: Потоки help
Показать сообщение отдельно
  #3  
Старый 23.01.2010, 15:49
InfectedM InfectedM вне форума
Прохожий
 
Регистрация: 21.10.2007
Сообщения: 5
Репутация: 10
По умолчанию

при нажатии на кнопку создаеться столько потоков сколько существует записей в memo1

допустим я создал 50 потоков.
1)как мне остановить вручнудю все эти 50 потоков и удалить их?
2)чтобы потоки удалились нужно в конце писать self.Terminate; self.free; ? или он сам удаляеться
3)как остановить например только 10-ый поток?
подскажите пожалуйса.


Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do begin
    TMyThread.Create(false, Memo1.lines[i]);
  end;
end;


Код:
 type
 TMyThread = class(TThread)
  private
    FUrl: string;
  public
    constructor Create(CreateSuspended: Boolean; AUrl: string);
  protected
    procedure Execute; override;
    procedure UpdateCaption;
  end;

implementation

uses Unit1;

constructor TMyThread.Create(CreateSuspended: Boolean; AUrl: string);
begin
  inherited Create(CreateSuspended);
  FUrl := AUrl;
  FreeOnTerminate := true;
end;

procedure TMyThread.Execute;
var
  http: TIdHTTP;
  str: TStringList;
begin
str := TStringList.Create();
  http := TIdHTTP.Create(nil);
  str.Text:= http.Get(FUrl);

    sleep(7000);
      str.SaveToFile(inttostr(random(222))+'.html');
      
  http.Free;
  str.free ;
  Synchronize(UpdateCaption);
  // self.Terminate;
     //self.free;
end;

procedure TMyThread.UpdateCaption;
begin
  Form1.Memo2.Lines.Add(FUrl);
end;
Ответить с цитированием