我在 iOS 设备的 Delphi xe5 应用程序中使用多线程时遇到问题。我的目标是执行“一些工作”(SQL 查询),同时让 TAniIndicator 旋转。我曾尝试使用 Applicaiton.ProcessMessages(),但这并不能保持微调器的顺利加载,如果有时会旋转的话。
这是我当前的 btn.OnClick 代码
begin
if btnLogin.Text = 'Login' then begin
aThread := TMyThread.Create(True);
aThread.FreeOnTerminate := true;
aThread.Start;
while Mode1 = 0 do begin
Form_Login.LoadSpinnerFrame.visible := True;
Form_Login.LoadSpinner.Visible := True;
Form_Login.LoadSpinner.Enabled := True;
// Application.ProcessMessages;
end;
Form_Login.LoadSpinnerFrame.visible := False;
Form_Login.LoadSpinner.Visible := False;
Form_Login.LoadSpinner.Enabled := False;
btnLogin.Text := 'Logout';
aThread.Destroy;
end else begin
btnLogin.Text := 'Login';
end;
这是 thread.execute 方法的代码
procedure TMyThread.Execute;
begin
Form_login.mode1 := 0;
Sleep(5000);
Form_login.mode1 := 1;
end;
我处于可以始终执行线程的地步,但微调器从未显示。当微调器在工作负载期间制作动画时,我如何执行“一些工作”?
谢谢,使用 Delphi xe5 开发 iOS 应用程序。
更新:好的,所以使用以下来自 LU RD 的代码进行了更新......它有效,但是,我注意到增加了滞后。当在调试器下运行时,应用程序在两行之间挂起:
Thread.DoTerminate;
Thread.FFinished := True;
System.Classes 单元的 ThreadProc 函数下
关于为什么的任何线索?或者我能做些什么来防止增加 5 秒的延迟?谢谢