我的数据库在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类是不可能的,我应该使用其他线程技术......
答案 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;