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 :

Process et HasExisted.


Sujet :

C#

  1. #1
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut Process et HasExisted.
    Bonjour,

    Dans une application, j'exécute différents processus à l'aide de l'objet Process et je vérifie si ceux-ci se sont correctement fermer tout seul (une fois leurs taches accomplis il se ferme) grâce à HasExisted :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(user1.HasExited && user2.HasExited)
    {
    if (user1.ExitCode != 0 || user2.ExitCode != 0)
       result = SearchErrorFile(true, user1.ExitCode + "_" + user2.ExitCode);
    }
    Je me demandais si, au moment où le processus se ferme, la condition "user1.HasExited" est testé, est ce que l'application peu rester dans un état "d'attente" très long, n'exécutant plus le reste du code, et ne faisant qu'attendre.

    Pourquoi cette question, parce que j'ai un bug : Lorsque que je lance l'application, elle rentre dans cette état d'attente mais lorsque j'utilise le débugger, elle ne le fait pas.
    J'ai déja eu se genre d'erreur, notemment lorsque du code est exécuté trop tot avant qu'autre chose ne soit fini. J'ai résolu ce genre de problème par des temporisation, mais je ne veux pas en mettre après chaque ligne de code, alors j'essaye de cibler ma zone de code qui est en cause dans mon problème.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Une solution (que j'utilisais en C++, pas testé en .Net) : tu mets des thread en waiting state sur le handle de process, et pas de soucis de propriétes HasExited mise à jour ou pas.

    EDIT : Aprés verif, l'équivalent en .NET est la méthode WaitForExit sur l'objet process.

    Donc tu lance chaque process via un thread qui se met en wait dessus, plutôt que d'aller checker périodiquement, et tes threads t'informent quand un process est terminé.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Merci pour la réponse.
    J'apporte un précision : Il est posssible que les processus que je lance ne s'arrête jamais, et c'est normal.
    Donc ta solution ne peu pas résoudre mon problème puisque même si je fait l'opération dans un thread séparé, je vais être amené au bout d'un certain à vérifier si le processus est arrêté ou non et je retombe dans le cas que j'ai expliqué plus haut.

    Merci quand même d'avoir cherché une solution à mon problème
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Heu désolé, j'oubliais mon sujet.
    J'ai découvert que mon problème venait d'ailleurs et je l'ai résolus.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

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

Discussions similaires

  1. Coment faire du post-processing avec Dx9 ?
    Par rolkA dans le forum DirectX
    Réponses: 23
    Dernier message: 24/11/2003, 21h15
  2. Nom d'un process!!!
    Par Oswald dans le forum C
    Réponses: 12
    Dernier message: 01/09/2003, 15h49
  3. Gestion des process
    Par Oswald dans le forum C
    Réponses: 3
    Dernier message: 29/08/2003, 11h52
  4. Réponses: 4
    Dernier message: 01/07/2003, 15h47
  5. [DOM] Ajout d'une instrution de processing
    Par corwin_d_ambre dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 06/05/2003, 11h51

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