begin process at 2010 02 10 12:45:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Exécution

 > 

Fermeture application


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fermeture application

mardi 21 octobre 2008 à 10:38:04 | Fermeture application

thebigboss

Bonjour,

j'ai un petit soucis, je suis en train de développer une petite appli à base de Thread, de TCPClient, de NetworkStream, de TCPListener et de Socket.

Lorsque je ferme mon application je tue bien tous mes Threads via la methode Abort(). Je ferme mon TCPClient, mon NetworkStream mon TCPListener, mon TCPClient et mon socket... mais j'ai quelques exceptions:

*******************************************
Thread d'affichage des messages:
"La reference d'objet n'est pas définie à une instance d'un objet."

Je tue ce thread de la manière suivante:
this.ThreadMessage.Abort();
stop=true;

Voici le Thread en question:
private void AfficheMessage()
        {
            try{
            while(!stop)
            {
                    string message=decode_message(ReceivedString());
                    if(message!="!VIDE")
                        this.Invoke(new invokeAfficheMessage(invokeAfficheMessageText),message);
               
                Thread.Sleep(100);
            }
            }catch(Exception ex)
            {
                MessageBox.Show(ex.Message,"DiscussionForm : AfficheMessage");
            }
        }

*******************************************
Thread d'ecoute des messages venant du serveur:
"Impossible de lire les données de la connexion de transport: Une opération de blocage a été interrompue par un appel WSACancelBlockingCall"

Je tue ce thread de la manière suivante:
socketClient.Close();
nsClient.Close();
threadClient.Abort();

Voici le Thread en question:
private void EcouteServeur()
        {
            try
            {
                nsClient = socketClient.GetStream();
                while(socketClient.Connected)
                {
                    Byte[] buffer = new Byte[2048];
                    int size = nsClient.Read(buffer,0,buffer.Length);
                    string commande = System.Text.Encoding.ASCII.GetString(buffer, 0, size);
                    Pile_Message.Enqueue(commande);
                }
            }catch(Exception ex)
            {
                MessageBox.Show(ex.Message,"Client : EcouteServeur");
            }
        }

*******************************************
Thread d'ecoute des messages venant du client:
"Une connexion établie a été abandonnée par un logiciel de votre ordinateur hôte".

Je tue ce thread de la manière suivante:
socketServeur.Close();
threadMessage.Abort();

Voici le Thread en question:
private void EcouteMessage()
        {
            try{
            while(socketServeur.Connected)
            {
                Byte[] buffer = new Byte[2048];
                int size = socketServeur.Receive(buffer);
                string commande = System.Text.Encoding.ASCII.GetString(buffer, 0, size);
                Pile_Message.Enqueue(commande);
            }
            }catch(Exception ex)
            {
              MessageBox.Show(ex.Message,"Serveur : EcouteMessage");
            }
        }

*******************************************
Thread d'ecoute des connexions Client:
"Le thread a été abandonné"

Je tue ce Thread de la manière suivante:
void MainFormFormClosed(object sender, FormClosedEventArgs e)
        {
            myListener.Stop();
            stop=true;
            ThreadEcouteConnexion.Abort();
            Application.Exit();
        }

Voici le Thread associé:
private void EcouteConnexionClient()
        {
            try{
            myListener = new TcpListener(myPort);
            myListener.Start();
           
            while(!stop)
            {
                socketServeur = myListener.AcceptSocket();
                connexion_en_mode_Serveur CMS=new connexion_en_mode_Serveur(socketServeur);
               
                while(CMS.Etat=="PROTOCOLE_CONNEXION" && !stop)
                    Thread.Sleep(100);
               
                if(CMS.Etat=="DISCUSSION")
                {
                    df=new DiscussionForm(AlwaysOnTop,CMS);
                    df.ShowDialog();
                }
               
            }
            }catch(Exception ex)
            {
              MessageBox.Show(ex.Message,"MainForm : EcouteConnexionClient");
            }
        }


Du coup quand je ferme mon appli il reste une instance qui tourne dans le gestionnaire de taches...

J'espère que l'un d'entre vous aura le courage de lire ce post inbitable...

Sinon est-ce que quelqu'un sait comment copier coller son message en gardant les couleurs syntaxes du C#? j'ai vu certains posts plus lisible que le mien...

Merci d'avance aux courageux.

A+

*******************************************
SharpDevelop est mon ami! CSharpFR.com aussi!!!!!!!!!


Cette discussion est classée dans : buffer, message, ex, thread, stop


Répondre à ce message

Sujets en rapport avec ce message

Arret d'un thread [ par icedreamer ] Bonjour,J'essaye d'arreter proprement un thread de cette manière :t.Abort();ce qui effectue bien l'arret du thread ...mais il m'affiche un message :"T Thread Events Invoke --> Je rends les armes .... [ par ylerazer ] Bonjour, je suis nouveau en C# et j'essaie de me faire des classes intelligentes .. mais j'ai bien peur qu'elles ne soient plus intelligentes que moi. Pb de connexion [ par EksTaZia ] jai une fonction:private void Envoi(NetworkStream str, string message) { try { if(str != null) { byte[] buffer = System.Text.Encoding.ASCII.GetBy Transfert données entre une Thread et un Form [ par walteau ] Bonjour à tous, je suis en train de développer dans le cadre d'experimentation une application qui envoi un message Udp vers le port 11000 de mon pc. Problème avec Mon appli [ par Noursounet ] Bonjour à tous! Je me suis mis il y a pas très longtemps au C#. Je développe donc en ce moment mes propres DLL de Client/Serveur et par habitude j'aim PB avec activeX [ par titi66 ] Bonjourj'utilise un activex pour controler des caméras IP , lorsque je veux afficher une deuxieme fenetre avec une caméra j'ai le message suivant : "I thread et variable de classe [ par neoisback ] Bonjour,Je vous explique mon probleme :je developpe un server tcp dans le cadre d'un projet, j'ai creer une form afin de suivre les information que re Unhandled Thread Exception [ par Lutinore ] Salut..protected override void OnClick( EventArgs e ) // Click sur une forme.{    //base.OnClick( e );     try    {        Thread t = new Thread( ne Redéfinition de mon exception [ par BackPack ] Bonjour à tous,J'ai une petite question. Je sais pas si c'est parce que j'ai pasles yeux en face des trous aujourd'hui mais je n'arrive pas àfaire un Pb d'affichage de fenetre et thread... [ par bigflo ] Salut,Je developpe un client de tchat en c#.Mais j'ai quelque pb d'affichage des fenetres de tchat. Explication:Bon, j'ai une treeview et lorsque je d


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales