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 :

C# et commande dos


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut C# et commande dos
    Bonjour,

    j'ai créé une petite winform qui me permet de cloner des VM virtual box.
    Je lance donc une commande dos du style vboxmanage....
    J'aimerai afficher un message lorsque le clonage s'est réellement terminé...
    Actuellement, le mesage s'affiche juste après que la commande ait commencé ! Comment détecter la fin de la commande ? Je pense qu'il faut créer un thread, mais je ne vois pas comment architecturer tout ça.
    Merci pour les réponses

  2. #2
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Salut,

    Le probleme, c'est la commande DOS. Il faudrait que tu lance un Processus dans ton code, et que tu attende sa fin.
    Regarde ici: http://msdn.microsoft.com/en-us/libr...ess.aspx#Y4320

    Comme tu le verra, on peut passer des arguments et cie, mais la on peut detecter la fin de se processus (regarde du coté de 'waitForExit').

    Le seul probleme avec ca, c'est que si tu fais ton traitement dans l'UI, ca va geler ta Form. Le mieux serait d'utiliser un BackgroundWorker, ce sera plus simple que les threads.
    Ce backgroundWorker pourrait lancer le Processus, attendre sa fin, et notifier l'UI de la fin du processus

    Bon courage

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (Process p = Process.Start( @"\rar.exe", arguments))
                    {
                                           p.WaitForExit();
                    }
    Un exemple avec winrar ....

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut
    Merci pour les réponses, effectivement j'étais passé par l'objet process, mais je ne connaissais pas la méthode waitforexit.
    Je vais essayer le backgroundWorker.
    Autre question : dans le contexte, ce n'est pas un problème de geler la form, mais j'aurais aimé mettre une progressbar... mais je en conanis pas le temps que met l'application console à s'exécuter. une idée ?
    bonne fin de journée

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Citation Envoyé par r83
    j'aurais aimé mettre une progressbar... mais je en conanis pas le temps que met l'application console à s'exécuter. une idée ?
    Quand on ne connais pas le temps, on place une ProgressBar juste pour montrer à l'utilisateur que ça travaille. Du coup, tu peux toujours la remplir cycliquement à intervalle de temps régulier.

    En WPF, je sais qu'il existe une propriété toute faite (IsIndeterminate) pour gérer ça, mais en WinForm, je ne sais pas si ça existe par défaut. Il faut peut-être se le simuler...

  6. #6
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Citation Envoyé par binoo Voir le message
    En WPF, je sais qu'il existe une propriété toute faite (IsIndeterminate) pour gérer ça, mais en WinForm, je ne sais pas si ça existe par défaut. Il faut peut-être se le simuler...
    Oep ca existe, mais un peu différement :
    http://msdn.microsoft.com/en-us/libr...bar.style.aspx

    Donc basiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    progressBar.Style = ProgressBarStyle.Marquee;
    (la propriété existe dans l'editeur)

Discussions similaires

  1. commande DOS manipulation résultat
    Par thomas1230 dans le forum Scripts/Batch
    Réponses: 21
    Dernier message: 25/03/2004, 12h29
  2. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 09h36
  3. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 22h28
  4. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08
  5. commande dos pour résoudre une adresse ip
    Par stephy dans le forum Développement
    Réponses: 2
    Dernier message: 17/12/2002, 14h04

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