请各位高手帮个忙看看:
程序执行到CreateIt中的Synchronize(InitEdit);就停在此处不动作了!
如果将此句注释掉,则UpdateEdit;的ED_T.Text:=IntToStr(CostTime);语句可正常执行,
(说明参数传递正常了。)这是为什么啊?和CreateIt中的什么有关呢?
先谢谢了!!!unit MyThread;interfaceuses
Windows, SysUtils,Classes,StdCtrls,Dialogs;type
TMyThread = class(TThread)
private
{ Private declarations }
ED_T:TEdit;
procedure InitEdit; //初始化Edit
procedure UpdateEdit; //修改Edit
protected
procedure Execute; override;
published
constructor CreateIt(ED:TEdit);
destructor Destroy;override;
end;implementation
uses Unit_TwoThread;//------------------------------------------------------------------------------
constructor TMyThread.CreateIt(ED:TEdit);
var a1:String;
begin
inherited Create(true);
FreeOnTerminate := true;
a1 := ED.Text;
ED_T := ED;
Synchronize(InitEdit);-------执行到此句出错,程序停在此处不动作了!
Suspended:=false;
end;
//------------------------------------------------------------------------------
procedure TMyThread.InitEdit; //初始化Edit
begin
ED_T.Text := ' ';
end;
//------------------------------------------------------------------------------
procedure TMyThread.UpdateEdit; //修改Edit
var CostTime:integer;
StartTicker,EndTicker:integer;
i,j:integer;
begin StartTicker := GetTickCount;
i:=0;
for i:=0 to 10000 do
begin
CostTime:=GetTickCount-StartTicker;
ED_T.Text:=IntToStr(CostTime);
end;end;
//------------------------------------------------------------------------------
procedure TMyThread.Execute;
begin
{ Place thread code here }
Synchronize(UpdateEdit);end;
//------------------------------------------------------------------------------
destructor TMyThread.Destroy;
begin
//PostMessage(Form1.Handle,wm_ThreadDoneMsg,self.ThreadID,0);
inherited destroy;
end;end.
程序执行到CreateIt中的Synchronize(InitEdit);就停在此处不动作了!
如果将此句注释掉,则UpdateEdit;的ED_T.Text:=IntToStr(CostTime);语句可正常执行,
(说明参数传递正常了。)这是为什么啊?和CreateIt中的什么有关呢?
先谢谢了!!!unit MyThread;interfaceuses
Windows, SysUtils,Classes,StdCtrls,Dialogs;type
TMyThread = class(TThread)
private
{ Private declarations }
ED_T:TEdit;
procedure InitEdit; //初始化Edit
procedure UpdateEdit; //修改Edit
protected
procedure Execute; override;
published
constructor CreateIt(ED:TEdit);
destructor Destroy;override;
end;implementation
uses Unit_TwoThread;//------------------------------------------------------------------------------
constructor TMyThread.CreateIt(ED:TEdit);
var a1:String;
begin
inherited Create(true);
FreeOnTerminate := true;
a1 := ED.Text;
ED_T := ED;
Synchronize(InitEdit);-------执行到此句出错,程序停在此处不动作了!
Suspended:=false;
end;
//------------------------------------------------------------------------------
procedure TMyThread.InitEdit; //初始化Edit
begin
ED_T.Text := ' ';
end;
//------------------------------------------------------------------------------
procedure TMyThread.UpdateEdit; //修改Edit
var CostTime:integer;
StartTicker,EndTicker:integer;
i,j:integer;
begin StartTicker := GetTickCount;
i:=0;
for i:=0 to 10000 do
begin
CostTime:=GetTickCount-StartTicker;
ED_T.Text:=IntToStr(CostTime);
end;end;
//------------------------------------------------------------------------------
procedure TMyThread.Execute;
begin
{ Place thread code here }
Synchronize(UpdateEdit);end;
//------------------------------------------------------------------------------
destructor TMyThread.Destroy;
begin
//PostMessage(Form1.Handle,wm_ThreadDoneMsg,self.ThreadID,0);
inherited destroy;
end;end.
对线程的概念很模糊,水平实在太差,还请各位高手多多指教!