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

C# Discussion :

Thread principal inactif après l'arrêt d'un autre thread


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Thread principal inactif après l'arrêt d'un autre thread
    Bonjour à tous,

    j'ai un problème que je n'arrive pas à comprendre.
    Je lance à partir de mon thread principal un thread secondaire appeler "procedureTh".
    procedureTh peut s'arrêter pour plusieurs raisons : arrêt du programme, appui sur un bouton demandant son arrêt ou une erreur lors de son execution.
    Il prend du temps et ne comporte pas de boucle donc je ne peux pas l'arrêter gentiment avec un booléen.
    Je suis donc "obligé" (je ne connais pas d'autres moyens) d'utiliser abort().
    J'appelle donc une fonction dans mon thread principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void fermer_procedure()
    {
         if(procedureThIsRunning)
    {
    procedureTh.abort();
    //puis des fonctions d'enregistrement ou de changement de variables rien de bien méchant.
    }
    }
    Et dans mon thread j'ai bien un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch(ThreadAbortException e) {
    //ecriture dans un fichier log
    }
    et aucun Finally qui pourrait être lancé et empêcher la fermeture.

    Le fichier log est bien complété, mon thread se ferme correctement, mais je ne reviens jamais sur les lignes qui suivent procedureTh.abort() dans le thread principal. De temps en temps il y en a une ou deux qui sont exécutées mais j'imagine qu'elles le sont avant que le procedureTh prenne la main.

    Si quelqu'un a une idée du pourquoi ? ou une manière détournée d'exécuter ces lignes. Merci d'avance.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Désolé tout le monde, j'ai compris le problème.
    J'avais une erreur dans mon thread qui appelait la fonction fermer_procedure avant que j'appuie sur le bouton. Donc la fonction fermer_procedure était exécutée dans mon le thread secondaire qui une fois "aborté" ne pouvait donc plus effectuer les lignes suivantes.
    Je suis resté bloqué dessus pendant 2 jours et demi, il a fallut que je poste le message pour trouver la solution. Merci à vous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/07/2009, 22h43
  2. Forcer réplication après l'arrêt d'un des sites maîtres
    Par ymerej dans le forum Entreprise Manager
    Réponses: 1
    Dernier message: 26/02/2007, 13h42
  3. [Thread]thread principal et autres thread.
    Par david06600 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 19/12/2006, 15h59
  4. Réponses: 1
    Dernier message: 19/05/2006, 09h24
  5. Réponses: 8
    Dernier message: 03/07/2004, 12h53

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