 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Luciano_Umbelino Novato

Registrado: Segunda-Feira, 9 de Novembro de 2009 Mensagens: 9
|
Enviada: Qui Fev 17, 2011 9:55 am Assunto: Thread não Atualiza BD no Windows NT |
|
|
Sr(a)s, bom dia,
Mais uma vez recorro a vcs, neste caso estou precisando muito e com urgência do seu auxílio. Estou implantando minha aplicação no cliente e está acontecendo um erro muito estranho. O cliente tem Windows 2008 R2 NT, com uma rede cheia de restrições. Teoricamente e pelo que o administrador da rede diz, todas as autorizações foram dadas. Acontece que nesta aplicação tenho uma thread que recebe um arquivo, com os dados desse arquivo txt, ele atualiza uma base de dados FireBird 2.5. Debugando, no cliente (com msgs numéricas) pude ver que acontece exatamente quando a thread vai atulizar o banco de dados. Nos testes que fiz, em diversas máquinas, com XP, Window7, a atualização funciona corretamente, só nesse cliente é que não acontece. Não estou sabendo mais o que fazer, alguem tem alguma pista? Sabe alguma coisa que eu possa fazer para contornar esta situação. No mesmo cliente, direto pela aplicação consigo atualizar uma outra tabela, acho que precisa haver alguma autorização especial para a thread? Será que o sistema encherga ela como uma aplicação independente?
Pessoal estou com maior urgência dessa resposta
Amigos desde já agradeço a sua atenção, qualquer auxílio será muito bem vindo.
Um abraço,
Luciano Umbelino |
|
| Voltar ao Topo |
|
 |
fabriciocolombo Aprendiz

Registrado: Quinta-Feira, 17 de Julho de 2008 Mensagens: 189
|
Enviada: Qui Fev 17, 2011 10:07 am Assunto: |
|
|
Pode estar ocorrendo alguma exceção dentro da thread.
Vc está fazendo algum tratamento de exceções dentro da thread? Está lançando alguma exceção manualmente? |
|
| Voltar ao Topo |
|
 |
Luciano_Umbelino Novato

Registrado: Segunda-Feira, 9 de Novembro de 2009 Mensagens: 9
|
Enviada: Qui Fev 17, 2011 11:29 am Assunto: Thread não Atualiza BD no Windows NT |
|
|
| fabriciocolombo escreveu: | Pode estar ocorrendo alguma exceção dentro da thread.
Vc está fazendo algum tratamento de exceções dentro da thread? Está lançando alguma exceção manualmente? |
Olá Fabricio, grato pela sua atenção.
Amigo, com certeza está havendo uma exceção e é justamente por não estar conseguindo resolver que postei o tópico. Acontece que quando a thread vai atualizar o BD não consegue. Isso só acontece no ambiente deste cliente que é um Windows 2008 R2 NT, já com o XP e W7, não acontece. O meu sentimento é que a Thread por ser um processo quase que apartado, também necessita de autorização. Esse é o problema.
Se tiver alguma dica será de grande auxílio.
Grato, |
|
| Voltar ao Topo |
|
 |
fabriciocolombo Aprendiz

Registrado: Quinta-Feira, 17 de Julho de 2008 Mensagens: 189
|
Enviada: Qui Fev 17, 2011 12:47 pm Assunto: |
|
|
É que as exceções lançadas dentro da thread não são propagadas para a aplicação.
Capture as exceções da thread para mostrar na aplicação. Fiz um exemplo simples.
| Código: |
TTeste= class(TThread)
private
FOnError: TExceptionEvent; //evento de Callback
FLastError: Exception; //Ultima exceção gerada
procedure NotifyError;
protected
procedure Execute;override;
public
constructor Create(AOnError: TExceptionEvent);
end;
{ TTeste }
procedure TTeste.Execute;
begin
inherited;
try
//Seu código aqui
raise Exception.Create('exceção qualquer para simular');
except
on E: Exception do
begin
FLastError := E;
Synchronize(NotifyError);
end;
end;
end;
constructor TTeste.Create(AOnError: TExceptionEvent);
begin
Assert(Assigned(AOnError));
FOnError := AOnError;
inherited create(false);
FreeOnTerminate := True;
end;
procedure TTeste.NotifyError;
begin
FOnError(Self, FLastError);
end;
|
Onde vc chama a thread, crie um método como esse
| Código: |
procedure TForm1.OnThreadError(Sender: TObject; Error: Exception);
begin
//Manipular a exceção
ShowMessage(Error.Message);
end;
|
e no construtor da thread passa o método de callback
| Código: | | TTeste.Create(OnThreadError); |
Desse modo vc vai sabe exatamente qual erro está acontecendo. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|