{$R *.dfm}type
mythread=class(tthread)
protected
procedure execute;override;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
mythread.Create(false);
end;{ mythread }procedure mythread.execute;
var i:integer;
begin
inherited;
freeonterminate:=true;
for i := 0 to 10000 do begin
form1.Edit1.Text:=inttostr(i);
Form1.Canvas.TextOut(10, 10, IntToStr(i));
form1.Edit1.Refresh;
end;
end;
运行时,单击button1,edit1没有显示为10000
edit1和(10,10)处的i不一致请问是什么原因谢谢
mythread=class(tthread)
protected
procedure execute;override;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
mythread.Create(false);
end;{ mythread }procedure mythread.execute;
var i:integer;
begin
inherited;
freeonterminate:=true;
for i := 0 to 10000 do begin
form1.Edit1.Text:=inttostr(i);
Form1.Canvas.TextOut(10, 10, IntToStr(i));
form1.Edit1.Refresh;
end;
end;
运行时,单击button1,edit1没有显示为10000
edit1和(10,10)处的i不一致请问是什么原因谢谢
解决方案 »
- 如何将数据写入一个已建Excel文件中指定行列中去
- 如何改变TreeView某一个结点的字体和图标?
- 为什么 access 在模糊查询的时候 内存益出 什么原因呢?????????
- 关于时间的问题,不知该如何解决?
- 谁能帮我看看我为什么hook不到ws2_32.dll的recv[附代码]
- 如何获取局域网中某台机器的IP地址?
- 求救:DNS服务器的开发原理!!!
- for Delphi6 的 flatstyle控件为什么没有了anchors属性?
- 如何使这样的字段值自动加1?
- 怎么取出ADO的错误描述?
- delphi 5 安装控件报错:can't load package XXX.bpl 执行页内操作时的错误
- 请问delphi怎么加密解密xml?
Form1.Canvas.TextOut(10, 10, IntToStr(i));
Form1.Canvas.Unlock;
如果只点击一次按钮直到运行完成,看起来应该不会不一致。若多次点击按钮(也就是多个线程同时进行),应该会出现乱跳的的情况,因为显示的是不同线程中的i。因这个i是线程局部变量,不会被多线程破坏,应该在每一次refresh后,textout和edit1中的值是一致的。
线程中不能直接访问VCL控件,得用Synchronize。