есть программа, которая берёт строку из текстового файла и на основе её переходит по ссылке IdHTTP.Get. пытаюсь реализовать многопоточность, но никак не выходит

почему-то потоки (сколько бы я их не задавал) за секунду убиваются до 1... и ещё другая проблема, как сделать так, чтобы потоки при работе с текстовым файлом распределили между собой строки, тем самым повышая производительность? а не обрабатывали все вместе одну и ту же. заранее благодарен
вот код юнита с потоком:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | type
TMyThread = class(TThread)
private
s,smod:string;
i:integer;
protected
procedure ShowResult;
procedure ThreadExit(Sender : TObject);
procedure Execute; override;
public
constructor Create; overload;
constructor TMyThread.Create;
begin
Create(true);
Inc(alive);
Priority:=tpHigher;
OnTerminate:=ThreadExit;
Resume;
end;
procedure TMyThread.ThreadExit(Sender: TObject);
begin
dec(alive);
end;
procedure TMyThread.Execute;
begin
assignfile(f,path);
reset(f);
assignfile(f1,extractfilepath(path)+'1.txt');
rewrite(f1);
repeat
while not eof(f) do
begin
readln(f,s);
login:=copy(s,1,pos('@',s)-1);
domain:=copy(s,pos('@',s)+1,length(s));
delete(domain,pos('.',domain),3);
Synchronize(ShowResult);
end;
until Terminated;
closefile(f);
closefile(f1);
for tr:=0 to n-1 do
begin
MyThread[i].Terminate;
Synchronize(ShowResult);
end;
end;
|
и вот код главного юнита:
Код:
1 2 3 4 5 6 7 8 9 10 11 | var
alive,n,q:integer;
MyThread:array of TMyThread;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:=10;
setlength(mythread,n);
for q:=0 to n-1 do
MyThread[q]:=TMyThread.Create;
end;
|