Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2012
MLROJO MLROJO is offline
Miembro
 
Registrado: jul 2004
Ubicación: Granada
Posts: 26
Poder: 0
MLROJO Va por buen camino
Problema con hilo y pantalla inactiva

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 [-]
var
  TLi1 :TListaThread;

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.
Responder Con Cita
  #2  
Antiguo 20-03-2012
CSIE CSIE is offline
Miembro
 
Registrado: feb 2008
Ubicación: Universo paralelo
Posts: 69
Poder: 17
CSIE Va por buen camino
Hola MLROJO

El problema es que si usas el "Synchronize" de ese modo, lo que estas haciendo es lo mismo que si lo ejecutas en el hilo principal.

Lo normal es que incluyas el método Sto_SearchDirectory en el thread y solo uses "Synchronize" cuando tienes que añadir elementos a lst.

Saludos.
Responder Con Cita
  #3  
Antiguo 22-03-2012
MLROJO MLROJO is offline
Miembro
 
Registrado: jul 2004
Ubicación: Granada
Posts: 26
Poder: 0
MLROJO Va por buen camino
Hola,

Muchas gracias, efectivamente, utilicé solamente "Synchronize" para añadir los datos a la lista y funcionó perfectamente.

Gracias de nuevo,

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Realizar acciones con la ventana del programa inactiva Furyxe Varios 6 24-01-2012 22:08:01
cuando llamo ejecutar un hilo dentro del proceso del hilo no lo hace robertosc Varios 1 14-08-2007 22:11:09
Problema al editar un hilo con código fuente jmariano Varios 2 28-08-2005 23:12:06
Dejar una ventana en segundo plano inactiva vhirginia Varios 7 22-04-2004 13:46:43


La franja horaria es GMT +2. Ahora son las 19:12:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi