问个简单多线程概念问题
venge 2005-04-04 10:39:57 unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Grids, DBGrids, ADODB, activex;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
lvThread = class(TThread)
private
btn1:tbutton;
protected
public
constructor Create(button:tbutton);
procedure Execute; override;
end;
var
Form1: TForm1;
lv:lvthread;
implementation
{$R *.dfm}
{ lvThread }
constructor lvThread.Create(button:tbutton);
begin
FreeOnTerminate:=true;
inherited Create(false);
btn1:=button;
end;
procedure lvThread.Execute;
begin
btn1.Caption:='ok';
form1.Button1.Caption:='ok';//这两种用法的差别体现在哪里?
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
lv:=lvthread.Create(button1);
end;
end.
我想知道对于控件,这两种用法到底各自是什么意思,因为如果从方便的角度来讲,线程里面控件多的时候第二种方法很方便,但是既然delphi提供了把控件传进线程的方法,我想它们应该有区别吧。
我怕程序做大后才发现它们的不同,那时要改n多东西,就太晚了,大家帮帮忙吧