请教各位老师一个线程问题:Synchronize(Method:TThreadMethod)中的Method不能带参数吗?
请教各位老师一个线程问题:
Synchronize(Method:TThreadMethod)中的Method带否参数?
以下是我自己写的一个 MyThread.pas,一运行就有如下出错提示:
unit MyThread; //MyThread.pas
interface
uses
Windows, SysUtils,Classes,StdCtrls;
type
TMyThread = class(TThread)
private
{ Private declarations }
ED:TEdit;
procedure InitEdit; //初始化Edit
procedure UpdateEdit(CostTime:Integer); //修改Edit
protected
procedure Execute; override;
published
constructor CreateIt(ED:TEdit);
end;
implementation
//------------------------------------------------------------------------------
constructor TMyThread.CreateIt(ED:TEdit);
begin
inherited Create(true);
FreeOnTerminate := true;
Synchronize(InitEdit);
Suspended:=false;
end;
//------------------------------------------------------------------------------
procedure TMyThread.InitEdit; //初始化Edit
begin
ED.Text:='';
end;
//------------------------------------------------------------------------------
procedure TMyThread.UpdateEdit(CostTime:Integer); //修改Edit
begin
ED.Text:=IntToStr(CostTime);
end;
//------------------------------------------------------------------------------
procedure TMyThread.Execute;
var
StartTicker,EndTicker:integer;
i,j:integer;
begin
{ Place thread code here }
StartTicker := GetTickCount;
i:=0;
for i:=0 to 100000 do
begin
j:=GetTickCount-StartTicker;
Synchronize(UpdateEdit(j)); --------------------------------------执行此句出错!
//错误提示:Incompatible types:"TThreadMethod"and "procedure,untyped pointer or
//untyped parameter"
end;
end;
end.
先谢了!!!
问题点数:0、回复次数:6Top
1 楼ocean617(海洋)回复于 2004-12-02 15:01:05 得分 0
Synchronize里面不可以有方法的,你这个程序的处理错了,应该把
i:=0;
for i:=0 to 100000 do
begin
j:=GetTickCount-StartTicker;
Synchronize(UpdateEdit(j)); --------------------------------------执行此句出错!
//错误提示:Incompatible types:"TThreadMethod"and "procedure,untyped pointer or
//untyped parameter"
end;
这一段处理到UpdateEdit这个方法里面,在这个方法里面进行工作才对
我们可不是老师哦:PTop
2 楼ocean617(海洋)回复于 2004-12-02 15:04:31 得分 0
Synchronize里面执行的是一个不带参数的过程的Top
3 楼chenyf2006()回复于 2004-12-02 15:20:45 得分 0
多谢 ocean617(海洋) !!!Top
4 楼chenyf2006()回复于 2004-12-10 08:59:33 得分 0
结贴吧!Top
5 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2004-12-10 09:12:47 得分 0
TThreadMethod = procedure of object;
Synchronize(Method:TThreadMethod)
Method 是一個函數指針 可以指向任何沒有返回值的成員過程member procedure...
Top
6 楼cyblueboy83(爱情白痴—电脑迷)回复于 2004-12-10 13:10:06 得分 0
Synchronize里面执行的是一个不带参数的过程的??
那如果要执行带参数的方法,怎么办呢?
Top




