2010-11-02 4 views
4

J'ai 2 processus externes à exécuter (2 console exe) qui fournissent une sortie à la console. Je cours ces applications sur l'application de wpf. Je capture la sortie de la console et l'utilise comme entrée.Comment attendre la fin d'un processus de console AVANT d'exécuter l'autre processus de console dans les applications wpf?

Voici comment je fais 1. Exécuter le premier processus. capture la sortie de la console. 2. effectuez un travail en utilisant la première sortie de processus. 3. Exécutez le deuxième processus après avoir fait la sortie de travail. Le problème que je rencontre est que je dois attendre que l'autre processus se termine et utiliser sa sortie avant que je puisse exécuter l'autre processus. Au moment où je veux exécuter le deuxième processus, le premier processus n'a pas été terminé. Comment puis-je forcer l'application wpf à attendre le premier processus AVANT d'exécuter le second processus?

Répondre

3

En supposant que vous utilisez la classe Process pour exécuter et capturer la sortie pour la console, vous pouvez utiliser la méthode Process.WaitForExit. Il bloquera le thread courant jusqu'à ce que le processus termine l'exécution. Il existe une autre surcharge qui peut bloquer le thread en cours jusqu'à ce que le processus se termine ou que la période de temporisation spécifiée soit écoulée.

+0

C'est ce que j'utilise aussi. Faites juste attention à cela, car cela verrouillera votre thread graphique si vous essayez de l'exécuter ici. – jocull

+0

J'ai utilisé process.waitforexit(). J'utilise aussi process.outputdatareceived, qui est l'endroit où je capture la sortie de la console. –

+0

@publicEnemy, où commencez-vous votre deuxième processus? Il devrait être sur le même fil après l'appel à WaitForExit() pour le premier processus. – VinayC

Questions connexes