IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Thread + fermeture application


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Par défaut Thread + fermeture application
    Salut, j ai un problème dans une application lorsque je la ferme un thread continue de s'éxécuter et donc m'empêche de fermer complètement. Dans la fenêtre de sortie un message "Le thread 'sans nom' s'est arrêter avec le code 0. mais ce message arrive avec un temps de retard important. Existe t-il un moyen de visualiser les threads en cours dans une application ? (debug) En effet je reprends cette application et apparement il s'agit d'un thread sur un equipement type RS232.... et je n'arrive pas savoir pourquoi le thread ne se ferme pas correctement.
    Si quelqu'un à une idée ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    le mieux serait que dans la fonction OnClosed de ton application (mainform)
    tu détruises tous les threads tournant...

    Normalement, tu devrais avoir une variable de type Thread pour ce thread
    sinon, je te conseille de te créer une variable pour ce Thread...

    Sinon, je pense qu'il doit etre possible de lister l'ensemble des threads
    d'une application..
    Mais j'ai plus en tete la façon de le faire

    The Monz, Toulouse

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par crevygood
    Salut, j ai un problème dans une application lorsque je la ferme un thread continue de s'éxécuter et donc m'empêche de fermer complètement. Dans la fenêtre de sortie un message "Le thread 'sans nom' s'est arrêter avec le code 0. mais ce message arrive avec un temps de retard important. Existe t-il un moyen de visualiser les threads en cours dans une application ? (debug) En effet je reprends cette application et apparement il s'agit d'un thread sur un equipement type RS232.... et je n'arrive pas savoir pourquoi le thread ne se ferme pas correctement.
    Si quelqu'un à une idée ?
    Tu fais un dispose avant de fermer ta form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            Me.Dispose()
        End Sub
    Voila ! SInon il faut récupérer ton thread et faire un Abord
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 104
    Par défaut
    Bonjour,

    1/ Il me semble que la méthode Close d'une fenêtre appel déjà le dispose ...

    2/ Il est possible (même si c'est pas terrible) d'appeler Application.Exit() mais si le thread est bloqué, ça ne changera rien. Ca n'a peut être rien a voir avec ce qui se passe, mais il me semble qu'un thread managé ne peut pas interompre l'appel d'une méthode "non managée" et c'est d'autant plus génant quand cet appel est bloquant.

    3/ Que fait ce Thread exactement ?

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par cboun94
    Bonjour,

    1/ Il me semble que la méthode Close d'une fenêtre appel déjà le dispose ...
    Non , Close ne fait que fermer ta fenetre et ne libére pas les ressources utilisées par contre Dispose ferme ta fenetre et libète tout.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 104
    Par défaut
    Et bien dans la MSDN pour la méthode Form.Close :
    ...
    Une fois un formulaire fermé, toutes les ressources créées dans cet objet sont libérées et le formulaire est supprimé.
    ...
    Si le formulaire que vous fermez est le formulaire de démarrage de votre application, votre application se termine.

    L'unique condition dans laquelle un formulaire n'est pas disposé sur Close est lorsqu'il fait partie d'une application MDI et que le formulaire n'est pas visible. Dans ce cas, vous devez appeler manuellement Dispose pour marquer tous les contrôles du formulaire pour le garbage collection.

    ...

    On aurait du commencer par là dès le début pour se rendre compte que les 2 comportements existent.

  7. #7
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par cboun94
    Et bien dans la MSDN pour la méthode Form.Close :
    ...
    Une fois un formulaire fermé, toutes les ressources créées dans cet objet sont libérées et le formulaire est supprimé.
    ...
    Si le formulaire que vous fermez est le formulaire de démarrage de votre application, votre application se termine.

    L'unique condition dans laquelle un formulaire n'est pas disposé sur Close est lorsqu'il fait partie d'une application MDI et que le formulaire n'est pas visible. Dans ce cas, vous devez appeler manuellement Dispose pour marquer tous les contrôles du formulaire pour le garbage collection.

    ...

    On aurait du commencer par là dès le début pour se rendre compte que les 2 comportements existent.
    Tu as donc la réponse à ta question
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. Fermeture application - Erreur thread
    Par b_lob dans le forum C#
    Réponses: 4
    Dernier message: 23/02/2007, 17h47
  2. [VBA-E]Fermeture Application Excel
    Par malloc_92 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/04/2006, 12h46
  3. [VB6] Probleme fermeture application
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/03/2006, 14h18
  4. [VB]fichier XL reste verrouillé apres fermeture application
    Par abdou.sahraoui dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/01/2006, 15h34
  5. Empecher fermeture Application Console.
    Par Oregon09 dans le forum Langage
    Réponses: 8
    Dernier message: 09/01/2006, 21h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo