f0rward
23.05.2009, 11:22
Хочу заменить в программе класс TThread на стандартные фунции BeginThread и EndThread. Вот так кусок кода выглядел на TThread :
...
for i:=1 to thr do begin
for j:=0 to source.Count -1 do begin
a[i]:=TNewThread.Create(true);
a[i].FreeOnTerminate:=true;
a[i].Priority:=tpLOWEst;
a[i].LoginTH:=copyLogin(Source.Strings[j]);
a[i].passTH:=copyPass(Source.Strings[j]);
a[i].Resume;
application.ProcessMessages;
if Application.Terminated then break;
if stop then begin
...
end;
end;
...
end;
Пробовал различными способами, никак.
Если один поток, то это будет выглядеть так :
...
type
PInfo=TInfo
TInfo=record
login, pass: string;
end;
...
function xz(info:PInfo);
begin
try
...
finally
Dispose(Info);
end;
procedure execute;
var
Info: PInfo;
hThread: integer;
Dummy: DWORD:
begin
New(Info);
Info.Login:='login';
Info.Pass:='pass';
hThread:=BeginThread(nil, 0, @xz, Info, 0, Dummy);
...
end;
И всё работает отлично. Но как организовать работу в несколько потоков, незнаю.
...
for i:=1 to thr do begin
for j:=0 to source.Count -1 do begin
a[i]:=TNewThread.Create(true);
a[i].FreeOnTerminate:=true;
a[i].Priority:=tpLOWEst;
a[i].LoginTH:=copyLogin(Source.Strings[j]);
a[i].passTH:=copyPass(Source.Strings[j]);
a[i].Resume;
application.ProcessMessages;
if Application.Terminated then break;
if stop then begin
...
end;
end;
...
end;
Пробовал различными способами, никак.
Если один поток, то это будет выглядеть так :
...
type
PInfo=TInfo
TInfo=record
login, pass: string;
end;
...
function xz(info:PInfo);
begin
try
...
finally
Dispose(Info);
end;
procedure execute;
var
Info: PInfo;
hThread: integer;
Dummy: DWORD:
begin
New(Info);
Info.Login:='login';
Info.Pass:='pass';
hThread:=BeginThread(nil, 0, @xz, Info, 0, Dummy);
...
end;
И всё работает отлично. Но как организовать работу в несколько потоков, незнаю.