Bonjour à tous,

Voila je rencontre un problème dans un programme en C#.
J'ai un Thread qui tourne qui attend des messages depuis un NamedPipe, en client donc.
Seulement si j'essaye de fermer mon application le thread continue de tourner jusqu'au prochain message avant de quitter.

Code :
Fonction qui lance l'écoute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
private void EcouteNamedPipe()
{
     mobjThreadTube = new Thread(tubeNotif.Ecoute);
     mobjThreadTube.Start();
}
Fonction qui arrête l'écoute :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
private void ArreteEcouteNamedPipe()
{
     if (mobjThreadTube != null)
     {
          tubeNotif.Stoppe();       
     }
}
Classe tubeNotif:
Fonction d'écoute tubeNotif.Ecoute:
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
public void Ecoute()
{
     mobjPipeClient = new NamedPipeClientStream(".", msNomTube, PipeDirection.InOut);
     mobjPipeClient.Connect(2000);
     StreamWriter objFluxEcrit = new StreamWriter(mobjPipeClient);
     objFluxEcrit.AutoFlush = true;
     objFluxEcrit.WriteLine(mnIdConnectTube); // permet l'identification du client pour le serveur
 
     objFluxLu = new StreamReader(mobjPipeClient);
     mbEcoute = true;
     while (mbEcoute == true) // boucle jusqu'à un appel à tubeNotif.Stoppe
     {
          string output = objFluxLu.ReadLine(); // bloque ici tant qu'il n'y a pas de nouveau message
          MessageBox.Show(output);
     }
}
Fonction d'arrêt tubeNotif.Stoppe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public void Stoppe()
{
     mbEcoute = false;
     objFluxLu.Close();
     if (mobjPipeClient != null)
     {
          mobjPipeClient.Close(); 
     }
}
Seulement voila dans la fonction tubeNotif.Ecoute l'execution se bloque sur la ligne string output = objFluxLu.ReadLine(); tant qu'il n'y a pas de nouveau message. donc si j'appelle la fonction d'arrêt tubeNotif.Stoppe le thread reste actif.

Si quelqu'un à rencontrer ce type de problème et a trouvé une solution merci de la partager. Je reste ouvert aux suggestions