Se supone que el Hilo principal de la aplicacion se va detener en una funcion hasta que ésta devuelva el resultado esperado, un ejemplo claro de esto es la funcion ShowModal de los formularios.
Código Delphi
[-]begin
Form1.ShowModal;Edit1.Text:='Hola';end;
Siguiendo ese ejemplo, el truco que buscas seria hacer detener tu funcion (MiFuncion) hasta que el metodo Execute del hilo que creaste devuelva o resuelva el resultado que buscas(segun te entiendo); para lo cual la solucion esta en utilizar
una variable dentro de tu clase Hilo (MiHilo) que indique si ya el metodo Execute resolvio el resultado esperado, para que tu funcion (MiFuncion) lo devuelva;
La variable a utilizar para eso podria ser una Booleana;
Un codigo ejemplo seria:
Código Delphi
[-]unit Unit2;
interface
uses
Classes;
type
MiHilo = class(TThread)
private
YA:Boolean; protected
procedure Execute; override;
Public
Function MiFuncion():Integer; end;
implementation
uses SysUtils;
function MiHilo.MiFuncion: Integer;
begin
while not YA do ; Result:=Lo_Que_Sea;
end;
procedure MiHilo.Execute;
begin
...
if Se_Resolvio_Lo_que_esparaba_Resolverse then
YA:=True;
end;
end.
Espero que se haya entendido la idea.
Saludos...