Thread

13/02/2003

0

Tenho uma thread que estou criando eu utilizo um componente TClientsocket
para conectar a um outro servidor e receber a resposta de uma consulta que
envio a ele, ai eh que mora o problema. O evento OnConnect so é executado
após o Componente estar com a propriedade Connected = true, e depois de um
tempo apos o envio vem a resposta, que é recebida no metodo OnRead, o
problema esta no fato de a ultima acao a ser executada dentro da minha
thread é o Open no componente, mas como tem um tempo ate ele receber a
resposta do outro servidor, a minha thread nao respeita isso e finaliza
antes. Se eu estiver debugando a aplicacao ai funciona, caso contrário não.
Alguem tem alguma ideia de como eu posso fazer para que a thread ´espere´ a
resposta do componente para depois finalizar? Não adianta colocar funcoes de
tempo pois isso eu ja fiz e nao funcionou.

Grata
Adriana Rodrigues


Adrianarodrigues

Adrianarodrigues

Responder

Posts

13/02/2003

Navoid

cara crie uma variável do tipo boolean chegou_resposta
ai antes de dar um open vc coloca assim
****
chegou_resposta:= false
****

ai no evento onread, qdo chegar a resposta que vc quer coloque isso
****
chegou_resposta:= true;
****

e na thread vc faiz assim
****
while not chegou_resposta do;
****

creio que isso deva resolver


Responder

14/02/2003

Adrianarodrigues

Não funciona, entra em um loop infinito e nao retorna a resposta.
Um teste que eu chequei a fazer que funcionou, foi quando eu coloquei um MessageDlg depois de executar o Open do socket, ai antes de dao o ok na mensagem aguardei um pouco, ai obtive a resposta da conexao.

Grata
Adriana


Responder

14/02/2003

Navoid

seguinte, então eu não entendi o que vc quiz dizer.
teria como vc me mandar o código pro meu e-mail?
ai eu analizo e te digo a solução.
por enquanto é o único meio que vejo

até


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar