2009-05-15 4 views
0

J'utilise C++ dans Borland Development Studio pour lancer un processus. Une fois le processus lancé, l'application parente est supposée l'attendre, mais continue à traiter les messages Windows. J'ai essayé d'utiliser spawnl avec P_WAIT après le lancement d'une minuterie, mais la minuterie ne se déclenchera pas lorsque le thread est bloqué, j'ai aussi essayé d'utiliser spawnl avec P_NOWAIT avec cwait, mais ça n'a pas marché non plus.en utilisant spawnl et en attendant que le processus fils se termine

des suggestions?

merci beaucoup

+0

Veuillez clarifier ce qui ne fonctionne pas réellement. L'application parente sortira-t-elle avant l'application enfant ou cessera-t-elle de traiter les messages ou quelque chose d'autre? –

+0

L'application parente doit cesser de répondre jusqu'à ce que le processus fils revienne, mais comme toujours il y a quelques exceptions, donc je veux continuer à traiter les messages sélectifs jusqu'à ce que le processus fils revienne. –

Répondre

1

que vous attendez la fin du processus dans une méthode qui gère les messages Windows? Si vous attendez le nouveau processus dans un gestionnaire de bouton-clic, Windows ne traitera plus aucun message tant que la méthode du bouton-clic ne sera pas terminée.

Si vous avez besoin de traitement à base de fond minuterie vous avez quelques options:

  1. créer un thread d'attendre la fin du processus.
  2. Créez une nouvelle minuterie qui vérifie périodiquement avec WaitForExit() pour déterminer quand l'autre processus est terminé.
  3. Dans votre gestionnaire actuel, appelez Windows WaitForExit() en utilisant votre période de temporisation comme argument. Si le processus n'est pas terminé lorsque WaitForExit() renvoie, effectuez le traitement basé sur le minuteur. Notez que cette option n'a toujours aucun message Windows en cours de traitement.
Questions connexes