一个如何带参数的线程问题?(100分)

  • 主题发起人 panzichan
  • 开始时间
P

panzichan

Unregistered / Unconfirmed
GUEST, unregistred user!
一个如何带参数的线程问题?
function co(i:integer):integer;
var
j:integer;
s:string;
begin
for j:=0 to ido
begin
s:=inttostr(j);
form1.label1.caption:=s;
form1.label1.update;
end;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
hThread:Thandle;
ThreadID:DWORD;
i:integer;
begin
i:=1000;
hthread:=createthread(nil,0,@co(i),nil,0,threadID);//该co()函数的参数i如何付给线程?
end;
[:(]
 
TThread 都是要继承的,你的线程类呢。
另外 createthread 是怎么写的。
你可以重载 线程的 Create 来传递参数。
 
这个是一个通讯用的线程类,
重载了create,参数是一个socket对象,一个Tmemo对象,一个TStringGrid
type
sendthread = class(TThread)//发送短连接数据
private
FSocket: TClientSocket;//TCustomWinSocket;//端口
Fgrid: TStringGrid;
Fmemo : Tmemo;
fmsg:string;
procedure show;
protected
procedure Execute;
override;
public
constructor Create(AOwner: TComponent;
Sock: TClientSocket;memo:Tmemo;grid:TStringGrid);
end;

constructor sendthread.Create(AOwner: TComponent;
Sock: TClientSocket;memo:Tmemo;grid:TStringGrid);
begin
FSocket:= sock;//端口
Fmemo:=memo;
Fgrid:=grid;//状态
FreeOnTerminate := True;
inherited Create(True);
。。。。。。。。
end;
 
createthread的第四个参数就是传给你的参数
用Delphi写的话还是建议从TThread类继承下来写
 
Co(P: TPoint);
stdcall;
begin
P^{Do you want}
end;

P: ^Integer;
P := 1;
hthread:=createthread(nil,0,@co,P,0,threadID);//
 
这个还没有结束阿
我都举了个带控件作参数的线程例子
难道还有难度????
 
多人接受答案了。
 
顶部