Hola a todos,
Tengo un proceso que debe cargar los datos de un archivo sobre una base de datos. He decidido realizar el proceso de carga en un Thread y mantener en el formulario principal una barra de progreso junto a un boton para cancelar ( reversionar la base de datos, rollback, etc... ) Me he topado con los tipicos problemas de "access violation", al hacer clic sobre cancelar, sin encontrar ninguna solucion
El codigo es
Código Delphi
[-]
procedure BtoCancelarClic();
begin
Thread.Suspend;
if Desea Cancelar then
begin
Thread.FinThread();
Thread.Resume;
end
else
begin
Thread.Resume;
end;
end;
procedure TThread.FinThread();
begin
fbEnd:= True;
end;
procedure TThread.Execute;
var
...
begin
while not Eof(F) and bOk and not fbEnd do
begin
Application.ProcessMessages;
...
end;
if bOk and not fbEnd then
fDatabase.Commit
else
fDatabase.Rollback;
end;
destructor TThread.Destroy();
begin
if fDatabase.InTransaction then fDatabase.Rollback;
fDatabase.Close; fSession.Close;
fDatabase.Free; fSession.Free;
PostMessage(fOwnerHandle, WM_User + 1, Self.ThreadID, 0);
inherited Destroy;
end;
Espero ue aquellos que esten mas familiarizados con los procesos con hilos puedan sugerir alguna idea y/o consejo. Gracias por todo ello.