Ver Mensaje Individual
  #7  
Antiguo 21-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si has creado un nuevo "Hilo" derivándolo de la clase "TThread" (que es lo habitual, creo) tu Hilo debería contar ya con el método "Terminate", puesto que es "TThread" quien implementa dicho método. Por otro lado el procedimiento "Terminate" se reduce a esto:

Código Delphi [-]
procedure TThread.Terminate;
begin
  FTerminated := True;
end;

Es decir, que "lo único" que se lleva a cabo es dar a la variable privada "FTerminated" el valor "True". Como la propiedad "Terminated" del Hilo lee esta variable privada, pues eso, en cuanto ejecutes el procedimiento "Terminate" la propiedad "Terminated" valdrá "True",... y el bucle de ejemplo que anteriormente puso el compañero acabará, puesto que:

Código Delphi [-]
procedure TMyThread.Execute;
begin
  //inicializacion de objetos
  try
    while not Terminated do
    begin
      // haz lo que debas
    end;
  finally
    // liberacion/finalizacion de objetos
  end;
end;

Es decir, mientras la variable "Terminated" valga "False" el bucle continúa ejecuándose, empero, en cuanto esta valga "True" el bucle no se ejecutará más.

¿De dónde sacas tu Hilo? ¿Lo derivas de "TThread"? Porque, como digo, si es así, deberías contar con el método "Terminate" sin más, no tienes que implementarlo tú por tu cuenta.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita