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 :

Comment detruire le process a l'interieur d'un thread ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Battosaiii
    Invité(e)
    Par défaut Comment detruire le process a l'interieur d'un thread ?
    Bonjour,

    J'ai un probleme assez simple mais complexe. J'aimerais tuer un process a l'interieur d'un thread comme dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Alpha oAlpha = new Alpha();
     Thread oThread = new Thread(new ThreadStart(oAlpha.Beta));
     // Start the thread
     oThread.Start();
    J'ai essayer suspend() mais ca donne pas de resultat. J'ai lu aussi qu'il fallait eviter oThread.Abort(); pour tuer un thread.

    Mon autre probleme c'est que la method que j'invoke dans le thread est une procedure en C. Or je ne sais pas comment interrompre cette procedure en C meme si j'en ai le controle.

    Auparavant j'utilisais SYstem.Diagnostics.Process pour lancer ma procedure(qui etait un executable). C'est tres facile de tuer SYstem.Diagnostics. Pourquoi c'est aussi complique de tuer un thread ?

    Comment tuer un thread ?

    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 527
    Par défaut
    J'aimerais tuer un process a l'interieur d'un thread
    Quand vous parlez de process, est-ce le terme lié au concept OS, donc une instance de programme ou le terme fonctionnel donc un traitement (fait dans un thread) ?

    Si c'est lié au traitement dans le thread, il suffit de faire un return dans le code du thread. Le thread sera automatiquement détruit à la fin de la méthode.

    Si c'est arrêter le processus où est hébergé le thread de traitement, pour éviter tout problème, il faut demander à tous les threads actifs de se terminer. C'est aux threads de se suicider et non à vous de les tuer.

    Or je ne sais pas comment interrompre cette procedure en C meme si j'en ai le controle.
    Une procédure C, c'est comme une méthode en C#, pour qu'elle s'interrompe proprement, il faut qu'elle se terminer elle même (via un return par exemple).
    Le plus naturel est de communiquer avec la procédure avec des Events (si vous savez appelez une routine C depuis du C#, vous connaissez le concept de PInvoke http://msdn.microsoft.com/en-us/libr...11(VS.85).aspx).
    Cette procédure vérifiera régulièrement cet Event et sortira de manière ordonnée via un "return" quand il sera signalé.

    C'est tres facile de tuer SYstem.Diagnostics
    Un Process (http://msdn.microsoft.com/en-us/libr...s.process.aspx) vous voulez dire ?
    Sa méthode Kill(http://msdn.microsoft.com/en-us/libr...cess.kill.aspx) est toute aussi dangereuse voir plus qu'un "Thread.Abort();".

    Franchement, j'ai l'impression que vous faîte une montagne de pas grand chose.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/01/2007, 23h15
  2. [HTML] comment casser un long mot à l'interieur d'une cellule TD ?
    Par longbeach dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/06/2006, 04h54
  3. [C#] Comment lancer un process dans cmd.exe ?
    Par freddyboy dans le forum C#
    Réponses: 2
    Dernier message: 23/01/2006, 12h45
  4. [Runtime] Detruire un process lancé par exec()
    Par Sebounet19 dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 04/10/2005, 09h17
  5. [BATCH] Comment tuer un process ?
    Par tonf dans le forum Windows
    Réponses: 8
    Dernier message: 08/03/2005, 15h48

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