在iOS上查询数据库时,如何使用线程正确地保持TAniIndi和ListView响应?

在iOS上查询数据库时,如何使用线程正确地保持TAniIndi和ListView响应?,ios,multithreading,delphi,firemonkey,midas-server,Ios,Multithreading,Delphi,Firemonkey,Midas Server,如果我使用SynchronizeGetResult,以下代码导致我的应用程序崩溃;阿尼印第变得不负责任。我认为问题集中在线程被破坏的过程中。有人能帮忙吗 Type TSearchRxT = class(TThread) public Token: string; Token1, Token2, Token3: String; SearchByPat: Boolean; constructor Create(const Patient: boolean

如果我使用SynchronizeGetResult,以下代码导致我的应用程序崩溃;阿尼印第变得不负责任。我认为问题集中在线程被破坏的过程中。有人能帮忙吗

  Type 
  TSearchRxT = class(TThread)
  public
    Token: string;
    Token1, Token2, Token3: String;
    SearchByPat: Boolean;
    constructor Create(const Patient: boolean); reintroduce;
  protected
    procedure GetResult;
    procedure Execute; override;
  end;

constructor TSearchRxT.Create(const Patient: boolean);
begin
  inherited Create(True);
end;

Function TCommonRoutines.SearchRx(Token: String):Boolean;
Var TThread;
  Token1, Token2, Token3: String;
begin
  FrmMain.AniIndi.Visible := True;
  FrmMain.AniIndi.Enabled := True;
  FrmMain.OpenOTC := False;
  CommonRoutine.MultiToken(Token, Token1, Token2, Token3); //defragment 
  string

  //================================
  SearchRxT :=  TSearchRxT.Create(True);
  SearchRxT.Token1 := Token1;
  SearchRxT.Token2 := Token2;
  SearchRxT.Token3 := Token3;
  SearchRxT.Token := Token;   //Host
  SearchRxT.OnTerminate := SearchPatThreadTerminated;
  SearchRxT.Start;
end;

procedure TSearchRxT.Execute;
Var
  i: Extended;
begin
  while not Terminated do
  begin
    TThread.Sleep(200);
    //Synchronize(GetResult);
        With ClientModuleSignature do
        begin
         //Query Database (select * from myTable);
        end;
   end;
 end;

procedure TCommonRoutines.SearchPatThreadTerminated(Sender: TObject);
begin
  SearchRxT := nil;
  FrmMain.OpenOTC := True;
  FrmMain.AniIndi.Enabled := False;
  FrmMain.AniIndi.Visible := False;
  FrmMain.lvPacientes.Repaint;
end;

我已经添加了线程定义

我在执行线程时发现了此问题的问题,在遍历数据集中的大量记录之前,我调用了DisableControls,以防止数据感知控件在每次活动记录更改时更新,这在尝试更新listView时导致内存错误

您需要将变量的类型声明添加到q中,否则您希望读者如何回答?您没有显示GetResult的功能。是在这里调用SearchRxT.Terminate吗?GetResult是一个查询数据库的进程,从myTable中选择*,如果我将该代码添加到GetResult中,AniIndi将变得不负责任,并且应用程序不会崩溃。问题的实质是,在调用过程查询iOS环境上的数据库时,如何在填充TListView时使TaniIndicator等组件具有响应性。