Thread
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
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
Curtidas 0
Respostas
Navoid
13/02/2003
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
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
GOSTEI 0
Adrianarodrigues
13/02/2003
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
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
GOSTEI 0
Navoid
13/02/2003
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é
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é
GOSTEI 0