sistema congelado!

Delphi

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

Crcam

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

16/03/2006

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.


GOSTEI 0
Martins

Martins

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...


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!


GOSTEI 0
Crcam

Crcam

16/03/2006

// 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


GOSTEI 0
POSTAR