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 :

arréter un process


Sujet :

C#

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 507
    Points : 3 137
    Points
    3 137
    Par défaut arréter un process
    Bonjour,

    Pour démarrer un programme externe, je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process pr = Process.Start("monexe.exe");
    Mais si je veux ensuite l'arrêter, est-ce que je suis obligé de passer par un sendMessage avec un WM_CLOSE ou bien y a t-il une autre solution avec C# ?

    Papy !

  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
    Points : 5 194
    Points
    5 194
    Par défaut
    pour ne pas faire , puisque tu as pr

    pr.Kill();

    hein, pourquoi pas ?

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 507
    Points : 3 137
    Points
    3 137
    Par défaut
    ben j'y pensais mais ça me semblait justement un peu "kill-bill"

    Le kill va le tuer sans réfléchir.
    Le problème c'est que ce programme peut être être en train de traiter des opérations importantes (récupération de données médicales par exemple).
    Il faut qu'il puisse se fermer en "douceur" après avoir terminé toutes ses opérations.

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    un WaitForExit alors; ou tu "vérifies" si toutes les opérations sont finies avant de kill

  5. #5
    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
    Points : 5 194
    Points
    5 194
    Par défaut
    beh, si tu veux "synchroniser" 2 process

    Une solution, serait que le programme qui fait les traitements prenne un mutex et quand celui ci est libre, tu peux le tuer

    sinon, tu peux toujours faire le pari de regarder son activité CPU, mais bon, c'est plus aléatoire (idem avec son occupation mémoire)

    Après, le waitForExit() va te bloquer ton application et c'est pas forcément le but recherché

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 507
    Points : 3 137
    Points
    3 137
    Par défaut
    Le waitforexit() ne "va pas le faire" .
    L'idée du mutex non plus.
    En fait, le programme est déjà codé et ne pourra surement pas être modifié.
    Il s'agit d'un exe qui se lance dans la barre des tâches de windows et qui surveille puis lit éventuellement des informations sur un port COM. Ces infos lues sont transformées en fichier que mon programme doit ensuite récupérer.
    Mon problème est de pouvoir l'exécuter et le laisser "vivre sa vie" tant que mon application tourne, ou que je lui demande de s'arrêter.
    Pour le WaitForEXit() je pourrais le coller dans un thread mais ça ne réglera pas mon problème qui est de pouvoir lui dire: "c'est bon, tu peux arréter et te fermer mais seulement quand tu n'auras plus rien à faire"

    Apparemment, le sendmessage semble nécessaire.

  7. #7
    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
    Points : 5 194
    Points
    5 194
    Par défaut
    oui

    Cela dit, tu aurais peut-etre une solution

    Tu peux effectivement faire un sendMessage() on est ok, mais tu pourrais aussi vérifier si le fichier est accessible en Ecriture. Si c'est le cas, c'est que ton application a fini ses traitements (si cela est possible).

    (cela dit, le WM_CLOSE, c'est bien, à condition que ton application le gère comme il faut et qu'elle continue à répondre )

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 507
    Points : 3 137
    Points
    3 137
    Par défaut
    J'ai oublié le s à fichiers ... :-)
    Ce programme peut en générer plusieurs.

    Vu qu'il semble que le WM_CLOSE soit la seule solution viable, j'espère que le programme externe gère ça comme il faut. Mais là, je dirais qu'il faut bien que ma "responsabilité" s'arrête quelque part.

    Merci pour le coup de main !

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

Discussions similaires

  1. Arrêter un process
    Par yanis97 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 28/09/2005, 09h03
  2. Réponses: 4
    Dernier message: 01/07/2003, 16h47
  3. [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, 12h51
  4. Arrêter le PC
    Par Smortex dans le forum Assembleur
    Réponses: 5
    Dernier message: 31/12/2002, 11h48
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 19h28

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