首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于线程中传递参数碰到有关问题

2012-08-24 
关于线程中传递参数碰到问题各位好,最近在学习Delphi时,想线程练手程序,碰到以下问题:思路: 点击Form上的B

关于线程中传递参数碰到问题
各位好,最近在学习Delphi时,想线程练手程序,碰到以下问题:
思路: 点击Form上的Button,线程开始执行;线程在运行过程中,让Form上的Label不断更新。
线程类:
  TMyThread = class(TThread)
  public
  constructor Create(var lable:TLabel);
  protected
  procedure Execute;override;
  private
  ShowHint : TLabel;
  Terminate : Boolean;

constructor TMyThread.Create(var lable:TLabel);
begin
  ShowHint := lable; //此处抛出异常
  Terminate := True;
end;

……
然后再Button点击事件里,启动线程
procedure TForm1.btn1Click(Sender: TObject);
begin
  ThreadRun.Create(lbl1); //创建、启动线程
end;

……

在Delphi里面,TLabel对象作为参数传递给线程,然后在线程里面再使用,这样可行吗?

[解决办法]
1. create最后应当加上:
inherited Create(False);

2.

引用在Delphi里面,TLabel对象作为参数传递给线程,然后在线程里面再使用,这样可行吗?

[解决办法]
线程里使用到Tlabel,需要加同步
[解决办法]
搞反了,是这样
ThreadRun:=TMyThread.Create(lbl1); //而不是ThreadRun.Create

constructor TMyThread.Create(Lable:TLabel);
begin
ShowHint := lable; 

inherited Create(False);
end;


[解决办法]
探讨
搞反了,是这样
ThreadRun:=TMyThread.Create(lbl1); //而不是ThreadRun.Create

constructor TMyThread.Create(Lable:TLabel);
begin
ShowHint := lable;

inherited Create(False);
end;

热点排行