Ver Mensaje Individual
  #4  
Antiguo 28-10-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Reputación: 29
delphi.com.ar Va camino a la fama
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
 TMiThread = class(TThread)
  protected
    procedure Execute; override;
  end;

TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FThread: TMiThread;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMiThread }

procedure TMiThread.Execute;
begin
  repeat
    { Código en ejecución }
  until Terminated;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  { Le envía la señal para que el hilo termine correctamente }
  FThread.Terminate;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  { Mata el hilo forzosamente }
  TerminateThread(FThread.Handle, 0);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  FThread := TMiThread.Create(True);
  FThread.FreeOnTerminate := True;
  FThread.Resume;
end;

end.

Si el hilo creó un DataSet, y lo matas abruptamente, el hilo no se encargará de cerrar y liberar este DataSet. Es mas, es muy posible que la consulta se siga ejecutando en el servidor. Solo imagina lo que puede producir que varios usuarios cancelen reiteradamente consultas de este tipo.
Yo analizaría si tu herramienta de conexión y tu servidor soportan consultas asincrónicas.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita