Hola,
Os comento, estoy desarrollando una aplicación a la que pretendo introducirle una funcionalidad que consiste en realizar una serie de tareas en modo background, a la vez que se ejecuta y puede interactuar el usuario con ella, sin que se la bloquee.
Pues bueno, para ello he creado una clase nueva, que desciende de TThread:
Código Delphi
[-] TListaThread = class(TThread)
private
lst: TCheckListBox;
protected
procedure Execute; override;
procedure Listar;
public
constructor Create(Box: TCheckListBox; ThreadPriority: TThreadPriority);
end;
Con sus respectivos metodos:
Código Delphi
[-]constructor TListaThread.Create(Box: TCheckListBox; ThreadPriority: TThreadPriority);
begin
inherited Create(False);
lst := box;
end;
procedure TListaThread.Execute;
begin
Synchronize(Listar);
end;
procedure TListaThread.Listar();
begin
Sto_SearchDirectory(lst.Items, 'c:\','*.txt', true,true);
end;
Donde Sto_SearchDirectory es una función que devuelve los ficheros encontrados según la ruta y demás opciones.
Por otra parte desde el formulario, defino la variable y creo el hilo:
Código Delphi
[-]procedure TFormMain.Button1Click(Sender: TObject);
begin
TLi1 := TListaThread.Create(CheckListBox1, tpNormal);
end;
Todo funciona bien, el problema está en que el formulario queda "colgado" mientras se ejecuta, es decir, no hay diferencia entre hacerlo así y poner directamente el Sto_SearchDirectory sin crear el hilo, etc..
Que hago mal? o es así y con esto no se consigue lo que quiero?
Gracias,
Saludos.