sistema congelado!
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...
eu já tentei Application.ProcessMessages
e THREAD não achei uma pessoa que me ajude a montar um pois nunca trabalehi com ele...
Crcam
Curtidas 0
Respostas
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.
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
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
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
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