奇怪,大家来看看。
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TTest=class(TThread)
private
procedure TTest_value;
public
protected
procedure Execute; override;
end;
var
Form1: TForm1;
af:TStrings;
ID:integer;
implementation
{$R *.dfm}
var
CS: TRTLCriticalSection;
procedure TTest.TTest_value;
begin
EnterCriticalSection(cs);
//af.Add('fdsafd'); //这儿自己定义的执行会出错
form1.ListBox1.Items.Add('fa'); //这样就不会出错
inc(id); //这个也是自定义的,执行不会出错
LeaveCriticalSection(cs);
end;
procedure TTest.Execute;
begin
TTest_value;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
dd: TTest ;
i:integer;
begin
InitializeCriticalsection(cs);
af:=TStrings.Create;
dd:=TTest.Create(true);
dd.Resume;
end;
各位帮我分析一下哪儿错了。
TStrings和listbox怎么有这样的区别。