Bonjour,

J'ai fait différents tests des composants Indy 10 et me voilà bloqué sur le problème qui suit :

L'application est des plus basique (1 forme, 1 TIdTCPServer, 1 mémo, 1 bouton Start, 1 bouton Stop) Voir le code des méthodes ci-dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
procedure TForm1.pxyButtonStartClick(Sender: TObject);
begin
  pxyMemo.Lines.Add('Listening on port ' + IntToStr(pxyIdTCPServer.DefaultPort));
  pxyIdTCPServer.Active := true;
end;
 
procedure TForm1.pxyButtonStopClick(Sender: TObject);
begin
  pxyIdTCPServer.Active := false;
  pxyMemo.Lines.Add('Stop listening on port ' + IntToStr(pxyIdTCPServer.DefaultPort));
end;
 
procedure TForm1.pxyIdTCPServerConnect(AContext: TIdContext);
begin
  pxyMemo.Lines.Add('Connexion de "' + AContext.Connection.Socket.Binding.PeerIP + ':' + IntToStr(AContext.Connection.Socket.Binding.PeerPort) + '"');
end;
 
procedure TForm1.pxyIdTCPServerDisconnect(AContext: TIdContext);
begin
  pxyMemo.Lines.Add('Déconnexion de "' + AContext.Connection.Socket.Binding.PeerIP + ':' + IntToStr(AContext.Connection.Socket.Binding.PeerPort) + '"');
end;
 
procedure TForm1.pxyIdTCPServerExecute(AContext: TIdContext);
var
  Line : String;
  StrWasSplit : Boolean;
begin
  Line := AContext.Connection.IOHandler.ReadLnSplit(StrWasSplit, #13, 10000);
  pxyMemo.Lines.Add('Received : ' + Line);
end;
Mon problème est le suivant : si une connexion a été effectuée, lorsque je clique sur le bouton Stop, toute l'application se fige pendant l'exécution de la ligne "pxyIdTCPServer.Active := false;", et ceci indéfiniment. Par contre, si aucune connexion n'a eu lieu, la ligne s'exécute sans s'arrêter !

Une idée pour m'aider ???

Je dois avoir loupé une information sur l'utilisation de ce composant car toutes les recherches que j'ai faites à ce sujet expliquent que pour arrêter le TIdTCPServer, il suffit de passer sa propriété "Active" à false !!!

Merci d'avance.