读书人

线程的小疑点

发布时间: 2012-03-27 13:44:24 作者: rapoo

线程的小问题
TTlsThread.Create('Dilbert');,构造函数中的参数,'Dilbert'是如何传入到变量 GlobalStr中的?
就是说,为什么第二次的弹出消息,为什么是 Dilbert?

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    Button1: TButton;    ListBox1: TListBox;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}var  GlobalStr:string;type  TTlsThread=class(TThread)    private      FNewStr:string;    public      constructor Create(const ANewStr:string);    published      procedure Execute;override;  end;procedure SetShowStr(S:string);begin  if s='' then    MessageBox(0,PChar(GlobalStr),'The String is ...',MB_OK)  else    GlobalStr:=s;end;constructor TTlsThread.Create(const ANewstr: string);begin  FNewStr:=ANewStr;  inherited Create(False);end;procedure TTlsThread.Execute;begin  FreeOnTerminate:=True;  SetShowStr(FNewStr);  SetShowStr('');end;procedure TForm1.Button1Click(Sender: TObject);begin  SetShowStr('Hello World');  SetShowStr('');  TTlsThread.Create('Dilbert');  Sleep(3000);   SetShowStr('');end;end.


[解决办法]
跟踪测试一下,看看是不是参数在传递时有问题吧

读书人网 >.NET

热点推荐