Delphi:如何在本地创建和使用Thread?

时间:2015-09-20 12:07:59

标签: multithreading delphi

我的数据库在VPS中,我应该从我的表中获得一些查询

由于从服务器获取查询需要很长时间(取决于Internet速度!),我想使用线程来获取查询

现在我创建一个线程并获取查询,然后通过发送和处理消息将结果发送到我的表单

我想知道是否可以在本地创建和使用线程?!?

我的意思是:

procedure Requery;
var
 ...
begin
 Create Thread;
 ...

 Pass my Query Component to Thread
 ...

 Getting Query in Thread;
 ...

 Terminate and Free Thread
 ...

 Do next jobs with Query;
 ...

end;

主要部分是最后一部分(做下一个工作......),我不想在消息处理程序中使用查询结果,我想在同一个程序和线程作业之后使用它们

有可能吗?!

我认为使用Delphi TThread类是不可能的,我应该使用其他线程技术......

  • 我正在使用Delphi XE6

1 个答案:

答案 0 :(得分:0)

我认为以这种方式使用线程并不是一个好主意,但答案是肯定的。你可以做到。

procedure LocalThread;
var
  LThread: TCustomThread; //Your thread class
  LThreadResult: xxxxxxx//Your result type
begin
  LThread := TCustomThread.Create(True);
  try
    //Assign your properties

    LThread.Start;

    //Option A: blocking
    LThread.WaitFor;

    //Option B: non blocking
    while not LThread.Finished do
    begin
      Sleep(xx);
      //Some progress here ??
    end;

    //Here query your thread for your result property
    LThreadResult := LThread.MyResultProperty;
  finally
    LThread.Free;
  end

  //Do next jobs with LThreadResult
end;