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

API, COM et SDKs Delphi Discussion :

Question concernant l'API "WaitforSingleObject


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Par défaut [Résolu] Question concernant l'API "WaitforSingleObject
    Bonjour,

    J'utilise la l'API Windows CreateProcess pour lancer une application, et ce dans une boucle.

    Comme l'application que je lance est 'mono-instance', je souhaite attendre qu'elle se termine pour la re-déclencher à nouveau avec d'autres paramètres.

    J'utilise donc dans ma boucle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if WaitforSingleObject(Processinfo.hProcess, INFINITE)=WAIT_OBJECT_0 then...
    Cette méthode est-elle acceptable ou est-il préférable d'envisager utiliser un timer (ou un thread ?) pour détecter la fin du dernier process déclenché ?

    Merci pour vos commentaires, opinions, remarques, etc. sur ce sujet !
    Drooxy

  2. #2
    Expert confirmé

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Par défaut
    Avec le paramètre INFINITE de WaitforSingleObject la procédure ne fini pas tant que l'application lancée ne sera pas fermée. Donc si tu exxécutes ce code ton application aura l'apparence d'une application bloquée.

    Une des solutions est d'utiliser un Thread comme tu le signales. Mais si tu dois fermer ton application avant celle que tu as lancés, il faudra fermer le thread de manière brutale.

    Une autre solution est de préciser un TimeOut sur la fonction ce qui te permet d'avoir la main de temps en temps pout mettre à jour la fenêtre ou annuler l'attente en cas de besoin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      ...
      Repeat
        Application.ProcessMessages;
      Until WaitForSingleObject(HandleNotification,200)<>WAIT_TIMEOUT;
      ...
    Comme ça tu peux aussi ajouter d'autres tests dans le Repeat..Until pour stopper l'attente.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Par défaut
    Merci pour cette réponse.

    En fait, mon application est destinée à tourner en background, sans Form visible (un peu comme un service sauf qu'elle devra être déclenchée depuis une ligne de commande).

    Le fait qu'elle soit 'bloquée'/en attente ne me dérange donc pas sauf si celà a des effets de bord auxquels je ne pense pas...

    La question complémentaire est: quel option dois-je utiliser pour une telle application ? (je pense que la créer comme une application standard et rendre le Form non visible n'est sûrement pas la solution la plus élégante et je ne suis pas sûr que la créer comme service NT soit une meilleure solution...)

    Un conseil là-dessus aussi serait donc le bienvenu !

    Merci,
    Drooxy

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 66
    Par défaut
    Après divers tests, la solution exposée ci-dessus ne semble pas poser de problème...

    Merci à tous pour votre aide.
    Drooxy

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

Discussions similaires

  1. Deux questions concernant le Générateur API Javascript
    Par marcterrier dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 27/11/2014, 19h40
  2. [Débutant] Deux questions concernants les vues
    Par 13obscur dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 19/04/2005, 14h29
  3. [Servlet + Class] question concernant plusieurs connections
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 29/11/2004, 16h39
  4. Réponses: 7
    Dernier message: 10/09/2004, 14h28
  5. [Indy] Questions concernant l'envoi de mail
    Par delphicrous dans le forum Web & réseau
    Réponses: 3
    Dernier message: 24/06/2004, 15h06

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