Fórum Threads x Funções recursivas #194293
11/11/2003
0
Fiz um programa que utiliza alguns processos demorados, então criei uma thread para ele, dentro da minha thread eu chamo uma função, nesta função existem alguns códigos e chamadas p/outras funções, uma destas funções é recursiva. Em uma simulação que eu fiz rodando a função principal fora da thread, o programa levou em torno de 10 segundos p/me apresentar o resultado, com a thread ele parece ter se perdido lá dentro. Detalhe, se eu chamo funções normais funciona legal, apenas a thread com função recursiva está dando problema, alguém sabe o que pode estar acontecendo e tem uma solução ou dica para este problema?
Att,
PhenomenoM
Phenomenom
Curtir tópico
+ 0Posts
11/11/2003
Vanius
Vc pode me enviar um exemplo?
grato,
Vanius Girodo
vaniusg@terra.com.br
Gostei + 0
11/11/2003
Aroldo Zanela
Coloca um fragmento do código pra gente avaliar melhor.
Gostei + 0
12/11/2003
Phenomenom
No evento onclick do meu programa eu coloquei o seguinte código:
begin
suiteThread.FreeOnTerminate:= true;
suiteThread.Resume;
end;
Dentro da unit de threads no ´execute´ coloquei o código para roda uma função:
var
quantidadesuite:integer;
begin
QuantidadeSuite:=ExportacaoForm.fnExportarSuite;
end;
Se a função executasse apenas o código normal como as outras threads que criei, funcionaria normal, mas dentro desta função é chamada outra função, ou melhor, uma procedure e esta é recursiva, o código da procedure é este:
procedure GetAllFiles(mask: string);
var
search: TSearchRec;
directory: string;
begin
directory := ExtractFilePath(mask);
if FindFirst(mask, $23, search) = 0 then
begin
repeat
Form1.ListBox1.Items.Add(directory + search.Name);
Inc(Count);
until FindNext(search) <> 0;
end;
if FindFirst(directory + ´*.*´, faDirectory, search) = 0 then
begin
repeat
if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> ´.´) then
GetAllFiles(directory + search.Name + ´\´ + ExtractFileName(mask));
until FindNext(search) <> 0;
FindClose(search);
end;
end;
Eu notei que se comentar a chamada da procedure dentro dela mesma, o programa chega no final.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)