sistema congelado!

16/03/2006

como evito que meu sistema congele durante um processo que pode levar de 2 a 10 minutos


eu já tentei Application.ProcessMessages

e THREAD não achei uma pessoa que me ajude a montar um pois nunca trabalehi com ele...


Crcam

Respostas

17/03/2006

Aroldo Zanela

Colega,

O método [b:81d15e968e]Application.ProcessMessages[/b:81d15e968e] ´funciona´ dentro de uma estrutura de laço, entretanto, dependendo de que esteja sendo processado, realmente nenhum resultado esperadom será obtido.
Se puder, coloque um fragmento do código (comentado) para avaliarmos uma solução.


Responder Citar

17/03/2006

Martins

como evito que meu sistema congele durante um processo que pode levar de 2 a 10 minutos eu já tentei Application.ProcessMessages e THREAD não achei uma pessoa que me ajude a montar um pois nunca trabalehi com ele...


Nobre amigo Carlos, passei um e-mail para vc com um exemplo básico de Thread, quanto ao Application.Processmessage, procede o q[b:2357344e9b] Aroldo Zanela[/b:2357344e9b] já ressaltou, mas ainda assim, coloque o código q deseja q seja colocado em uma thread.

Boa sorte!


Responder Citar

18/03/2006

Crcam

// copia public
procedure TForm1.BkpPublic(Sender: TObject);
var
DirPublicOrig,DirPublicDest:pchar;
a:integer;
begin

DirPublicOrig:=pchar(PublicOr);

DirPublicDest:=pchar(PublicDe);

for a:=0 to FileListBox_public.Items.Count do
begin
FileListBox_public.itemindex:=a;
Gauge_public.progress:=(a*100) div FileListBox_public.Items.Count;
copyfile(pchar(DirPublicOrig+´\´+ExtractFilename(FileListBox_public.FileName)),pchar(DirPublicDest+´\´+ExtractFilename(FileListBox_public.FileName)),true);
end;


// hora fim
Hora_final:=(Time);
lbl_hora_final.Caption:=timetostr(Hora_final);
lbl_temp.Caption :=TimeToStr(Hora_Inicial - Hora_final);
// fim hora fim
end;
// fim copia public


// limpeza
procedure TForm1.LimpaArq(Sender: TObject);
var
SR: TSearchRec;
copan, publi: integer;
begin

begin
copan := FindFirst(CopanDe+´\*.*´, faAnyFile, SR);
while copan = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(CopanDe+´\´ + SR.Name) then
ShowMessage(´Não Foi Possível Limpar´ +CopanDe+´\´+SR.Name);
copan := FindNext(SR);
end;
end;

begin
publi := FindFirst(PublicDe+´\*.*´, faAnyFile, SR);
while publi = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then
if not DeleteFile(PublicDe+´\´ + SR.Name) then
ShowMessage(´Não Foi Possível Limpar´ +PublicDe+´\´+SR.Name);
publi := FindNext(SR);

end;
end;

end;
// fim limpeza

são essas funções basicas copia e limpeza


Responder Citar