Wątek Delphi ADO Query

Mam kod zapytania, który mogę wywołać za każdym razem, gdy muszę pobrać dane z bazy danych, i chcę, aby był wątkowany. Nie wiem, jak zaimplementować ten kod w wątku, abym mógł ponownie użyć tego kodu, w zasadzie chcę, aby ten kod znajdował się w wątku. Wiem, jak utworzyć proste zapytanie do bazy danych w wątku, ale chcę coś, co mogę ponownie wykorzystać. Czy ktoś może mi wskazać, gdzie mogę znaleźć przykłady lub być na tyle uprzejmy, aby dać przykład?

Oto moje przykładowe zapytanie do bazy danych:

function TDBConnection.SQLOpen(const SQLStr: String): TDataSet;
var
  i: Integer
begin
  try
    Result := TADOQuery.Create(DBConnect.FDatabaseConection);
    TADOQuery(Result).Connection:=DBConnect.FDatabaseConnection;
    TADOQuery(Result).CommandTimeOut:=30;
    TADOQuery(Result).SQL.Text := SQLStr;
    TADOQuery(Result).Open;
  except

  end;
end;

Oto przykład tego, jak nazywam powyższą funkcję:

function TDBConnection.GetUserInfo: Boolean;
var
  sqlStr: String;
  Database: TDataset;
begin
  sqlStr:= 'SELECT FIELD1, FIELD2, FIELD3 FROM TABLE1';
  try
    Dataset := SQLOpen(sqlStr);
    if not Dataset.IsEmpty then
    begin
      //pass result to StringGrid
    end;
  finally
    FreeAndNil(SQLParams);
    FreeAndNil(Dataset);
  end;
end;

questionAnswers(1)

yourAnswerToTheQuestion