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
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
Curtir tópico
+ 0
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;
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
Clique aqui para fazer login e interagir na Comunidade :)