Thi*_*ini 0 delphi button access-violation
我试图在窗体上移动2个按钮,使用while循环检查按钮left属性,但我有一个访问冲突.我正在使用CreateThread()来讨论这个过程
The code:
procedure AnimButton1();
var ImageCount: integer;
var b1, b2: integer;
begin
try
while (b2 <> 187) do
begin
b2 := frmNotification.btnBuzina2.Left;
frmNotification.btnBuzina2.Left := b2 - 1;
end;
while (b1 <> 256) do
begin
b1 := frmNotification.btnBuzina.Left;
frmNotification.btnBuzina.Left := b1 - 1;
end;
except;
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用Sleep()至少5毫秒时,我没有访问冲突,如下所示:
procedure AnimButton1();
var ImageCount: integer;
var b1, b2: integer;
begin
try
while (b2 <> 187) do
begin
b2 := frmNotification.btnBuzina2.Left;
frmNotification.btnBuzina2.Left := b2 - 1;
Sleep(5);
end;
while (b1 <> 256) do
begin
b1 := frmNotification.btnBuzina.Left;
frmNotification.btnBuzina.Left := b1 - 1;
Sleep(5);
end;
except;
end;
end;
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我找出为什么没有睡眠我得到访问违规并与它我不?
提前thx!
我正在执行该程序
CreateThread().
那是你的问题.只能从主UI线程调用VCL代码.用于TThread.Synchronize在主线程上调用VCL代码.
也就是说,计时器可能是一个比线程更合适的解决方案.
| 归档时间: |
|
| 查看次数: |
274 次 |
| 最近记录: |