Fórum O programa continua sendo rodado após finalizado.. #298186
03/10/2005
0
Eu fecho o programa.. e ele continua rodando no Windows..
tanto que o Delphi age como se ele tivesse rodando..
Se eu comento minha primeira tentativa de usar Thread.. ele funciona direito.. então o erro tá nela..
você me permitem colar aqui?
Quando o Cliente TCP do indi conectar:
O Thread é:
As procedures são:
há algo errado?
tanto que o Delphi age como se ele tivesse rodando..
Se eu comento minha primeira tentativa de usar Thread.. ele funciona direito.. então o erro tá nela..
você me permitem colar aqui?
Quando o Cliente TCP do indi conectar:
procedure Tlincenet.IdTCPClient1Connected(Sender: TObject); var temp : checamsg; begin temp := checamsg.cria; end;
O Thread é:
type checamsg = class(TThread) private public procedure Execute; OverRide; constructor cria; procedure Analizar_Mensagem_Recebida(temp : string); procedure T; procedure proceder; end;
As procedures são:
constructor checamsg.cria; begin FreeOnTerminate := true; Suspended := false; if not lincenet.IdTCPClient1.Connected then begin Terminate; end else begin proceder; end; end; procedure checamsg.proceder; begin while lincenet.IdTCPClient1.Connected do begin try Analizar_Mensagem_Recebida(lincenet.IdTCPClient1.ReadLn); except lincenet.IdTCPClient1.Disconnect; end; Application.ProcessMessages; end; end; procedure checamsg.Analizar_Mensagem_Recebida(temp : string); begin temp := lincenet.D(temp); lincenet.debug(temp); end; procedure checamsg.Execute; begin end; procedure checamsg.T; begin Terminate; end;
há algo errado?
Amon-ra
Curtir tópico
+ 0
Responder
Posts
03/10/2005
Beppe
O código referente a ´thread´ deve ficar no Execute. Como vc chama proceder no criar, não caracteriza multi-programação, o código executa no contexto da thread chamadora. Remova tbm o Application.ProcessMessages. Se quer atualizar a tela, mova o código específico para um método e o chame com Synchronize(NomeDoMetodo)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)