GARANTIR DESCONTO

Fórum Utilizar showmessage em Thread (Syncronize?) #350868

20/12/2007

0

Prezados Amigos....
Vejam se podem me ajudar....

Tenho um processo de backup no inicio e na saida do sistema, que estou aplicando em uma thread pque ele estava travando a aplicação principal.
Pelo que entendi, não posso utilizar processos que utilizem a vcl ou a clx a não ser via sincronize(...).
Então o que ocorre é o seguinte..
Dentro deste processo de backup tenho algumas partes que caso ocorra erro.. solto mensagens do tipo showmessage ao usuario informando erros, sucesso no backup, etc...
Mas são cerca de 5 showmessage´s diferentes... um para cada situação de erro ou sucesso....
E neste caso então.. como fazer.. se o metodo sincronize pelo que vi, chama um procedimento onde dentro do mesmo terei as mensagens... e para diferenciar as mensagens precisaria de um parametro para idenfiticar o tipo de erro e soltar a mensagem apropriada...
Então quando tento declarar para chamar uma procedure do tipo.
Procedure Mensagens(Tipo: String); //Soltarei a mensagem especifica baseado no que eu passar como parametro....

Ex: Syncronize(Mensagens(Sucesso));

Dá um erro dizendo que sincronize não aceita parametros.. ou algo assim...

Enfim.. A unica solução que encontrei, atraves de uma dica que vi no forum é utilizar o messagebox ao inves do showmessage.
Mas o messagebox existe como primeiro parametro uma especie de ´handle´ (pelo que entendi é o form de origem da mensagem... )

Então estão usando assim:
MessageBox(F_Principal.Handle, pchar(´Sucesso no backup!´), pchar(´Atenção´), mb_ok);

Uma vez que criei a thread no F_Principal, este primeiro parametro está correto? É isso mesmo que tenho que usar?

E uma ultima questão... e como faço para destruir esta thread após o termino do processamento do codigo que tenho no .execute() da mesma.
Tenho que dar algum comando dentro do bloco execute() na ultima linha... ou depois que chamo a thread no form principal, enfim.. como garantir que ela não ficará na memoria...

Um abraço a todos...
Pablo Rodrigues Lima


Pablo_lima

Pablo_lima

Responder

Posts

20/12/2007

Giordanocwb

Porque você não gera um arquivo de log de backup ao invés de mostrar isso com mensagens de erro??

Aí no final da thread, caso tenha dado algum erro, você abre o arquivo mostrando ao usuário e caso não tenha dado erro, o processo segue normalmente. Já pensou nessa idéia??

Para a thread ser liberada da memória automaticamente após o término, use Thread.FreeOnTerminate := True;


Responder

Gostei + 0

20/12/2007

Bruno Belchior

O Syncronize é um método que recebe um outro método, mas a assinatura desse método deve conter apenas um único parâmetro.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar