多线程显示的问题
秋天之落叶 2018-04-15 08:21:29 开始学习线程,看了网上的教程,凑了一个简单的程序,有一奇怪的问题请教:
TMyThead = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
end;
procedure TMyThead.Execute;
begin
for m := 0 to 20000 do // m全局变量
begin
Form6.Edit2.text := m.ToString; //行1
Form6.Memo1.Lines.Add(m.tostring); //行2
end;
end;
procedure TForm6.Button1Click(Sender: TObject);
begin
for n := 0 to 20000 do // n全局变量
begin
Edit1.text := n.ToString;
Application.ProcessMessages;
end;
end;
procedure TForm6.Button2Click(Sender: TObject);
var
MyThread: TMyThead;
begin
MyThread := TMyThead.Create(False);
end;
TMyThead.Execute中
仅使用 //行1 就会出现错误:First chance exception at $6ED66231. Exception class $C0000005 with message 'access violation at 0x6ed66231: read of address 0x00000000'. Process Project5.exe (5996)
仅使用 //行2,一切正常;
同时使用 //行1和//行2,一切正常。
这个问题对我来说很是奇怪,有请高手解惑。