ok ise este ejemplo de la sincronizacion
Código Delphi
[-]
type
TBarra = class(TThread)
private
protected
procedure detenlabarra;
procedure Execute; override;
public
end;
TForm1 = class(TForm)
Button1: TButton;
RichEdit1: TRichEdit;
ProgressBar1: TProgressBar;
OracleSession1: TOracleSession;
OracleLogon1: TOracleLogon;
OracleScript1: TOracleScript;
OracleQuery1: TOracleQuery;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
cont:integer;
{$R *.dfm}
procedure TBarra.detenlabarra;
begin
sleep(2000);
cont:=1;
end;
procedure TBarra.Execute;
begin
Synchronize(detenlabarra);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hilo:TBarra;
begin
hilo:=TBarra.Create(False);
while cont<>1 do
begin
ProgressBar1.StepIt;
sleep(125);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cont:=0;
end;
pero nunca se detiene, en cambio si le hago asi si
Código Delphi
[-]
type
TBarra = class(TThread)
private
protected
procedure Execute; override;
public
end;
TForm1 = class(TForm)
Button1: TButton;
RichEdit1: TRichEdit;
ProgressBar1: TProgressBar;
OracleSession1: TOracleSession;
OracleLogon1: TOracleLogon;
OracleScript1: TOracleScript;
OracleQuery1: TOracleQuery;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
var
cont:integer;
{$R *.dfm}
procedure TBarra.Execute;
begin
sleep(2000);
cont:=1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hilo:TBarra;
begin
hilo:=TBarra.Create(False);
while cont<>1 do
begin
ProgressBar1.StepIt;
sleep(125);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cont:=0;
end;
que podra estar mal?