LIGERO
12-09-2012, 15:49:06
Buenas tardes amigos foreros:
Tengo un programa con una hebra que hace grabaciones en una base de datos sql server cada cuarto de hora y para ello utilizo la hebra.
Ver código.
unit Hebras;
interface
uses
Classes;
type
THebraCuartoHora = class(TThread)
grabar : boolean;
constructor Create; reintroduce; overload;
procedure Execute; override;
end;
var HebraCuartoHora : THebraCuartoHora;
implementation
uses DateUtils, sysutils, globales, BBDDCogeneracion, logging;
constructor THebraCuartoHora.Create;
begin
// llamamos al constructor del padre (TThread)
inherited Create(True);
grabar := true;
end;
procedure THebraCuartoHora.Execute;
var ahora: TdateTime;
minutos, segundos : integer;
begin
inherited;
while not TerminarPrograma do
begin
ahora := now;
minutos := MinuteOf(ahora);
segundos := SecondOf(ahora);
if ((minutos mod 15) = 0) and (segundos = 0) then
begin
// Incrementamos el contador de segundos y actualizamos la etiqueta
if (grabar = true) then
begin
grabar := false;
logger.log(elInfo,'::::::::::: Grabando Cuartos de Hora :::::::::::');
try
//InitializeCriticalSection(SeccionCritica);
GrabaCuartosHora(ahora);
//DeleteCriticalSection(SeccionCritica);
logger.log(elInfo,'::::::::::: Cuartos de Hora Grabados :::::::::::');
except
logger.log(elerror,'******** Error Grabando Cuartos de Hora ********');
grabar := true;
end;
end;
end
else
grabar := true;
end;
end;
end.
El problema es que la cpu se pone a 100% y baja bastante poco.
Qué puedo hacer.
Tengo un programa con una hebra que hace grabaciones en una base de datos sql server cada cuarto de hora y para ello utilizo la hebra.
Ver código.
unit Hebras;
interface
uses
Classes;
type
THebraCuartoHora = class(TThread)
grabar : boolean;
constructor Create; reintroduce; overload;
procedure Execute; override;
end;
var HebraCuartoHora : THebraCuartoHora;
implementation
uses DateUtils, sysutils, globales, BBDDCogeneracion, logging;
constructor THebraCuartoHora.Create;
begin
// llamamos al constructor del padre (TThread)
inherited Create(True);
grabar := true;
end;
procedure THebraCuartoHora.Execute;
var ahora: TdateTime;
minutos, segundos : integer;
begin
inherited;
while not TerminarPrograma do
begin
ahora := now;
minutos := MinuteOf(ahora);
segundos := SecondOf(ahora);
if ((minutos mod 15) = 0) and (segundos = 0) then
begin
// Incrementamos el contador de segundos y actualizamos la etiqueta
if (grabar = true) then
begin
grabar := false;
logger.log(elInfo,'::::::::::: Grabando Cuartos de Hora :::::::::::');
try
//InitializeCriticalSection(SeccionCritica);
GrabaCuartosHora(ahora);
//DeleteCriticalSection(SeccionCritica);
logger.log(elInfo,'::::::::::: Cuartos de Hora Grabados :::::::::::');
except
logger.log(elerror,'******** Error Grabando Cuartos de Hora ********');
grabar := true;
end;
end;
end
else
grabar := true;
end;
end;
end.
El problema es que la cpu se pone a 100% y baja bastante poco.
Qué puedo hacer.