Comme le titre le suggère, existe-t-il un équivalent à Process.Start
(permet d'exécuter une autre application ou un fichier batch) que je peux attendre ?
Je joue avec une petite application console et cela semblait être l'endroit idéal pour utiliser async et await mais je ne trouve aucune documentation pour ce scénario.
Ce que je pense, c'est quelque chose comme ça :
void async RunCommand()
{
var result = await Process.RunAsync("command to run");
}
2 votes
Pourquoi n'utilisez-vous pas simplement WaitForExit sur l'objet Process retourné ?
3 votes
D'ailleurs, il semble que vous recherchiez une solution "synchronisée" plutôt qu'une solution "asynchrone". Le titre est donc trompeur.
2 votes
@YoryeNathan - lol. En effet,
Process.Start
es asynchrone et le PO semble vouloir une version synchrone.0 votes
Ou peut-être ne voulez-vous pas attendre la sortie, mais attendre le "chargé" ? Veuillez clarifier, OP.
14 votes
L'OP parle des nouveaux mots-clés async/await dans C# 5.
1 votes
@aquinas, oui, mais cela n'explique pas grand chose, car l'asynchrone
Process.Start()
n'a pas de sens.4 votes
Ok, j'ai mis à jour mon post pour être un peu plus clair. L'explication de la raison pour laquelle je veux ceci est simple. Imaginez un scénario où vous devez exécuter une commande externe (quelque chose comme 7zip) et ensuite continuer le flux de l'application. C'est exactement ce que async/await est censé faciliter et pourtant il ne semble pas y avoir de moyen d'exécuter un processus et d'attendre sa sortie.
0 votes
Et si j'avais deux processus que je voulais exécuter dos à dos mais de manière asynchrone, comme dans la réponse ci-dessous ? Comment dois-je m'y prendre ?
0 votes
En rapport : process.WaitForExit() de manière asynchrone