2 votes

Exécution d'une commande depuis C# et attente de la fin de l'exécution

J'ai un programme qui va créer un nouveau site web dans IIS 6. Comment puis-je faire en sorte que l'exécution des commandes attende qu'elle se termine ? Actuellement, elle n'attend pas, et le site Web n'est pas créé.

Je ne peux pas utiliser un fichier .bat car le DirectoryPath , Nom du site , AppPoolName y Numéro de port sont fournis par l'utilisation pendant l'exécution de l'application.

Le code ci-dessous est exécuté sur un thread d'arrière-plan et non sur le thread principal.

System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = Environment.SystemDirectory + "/cmd.exe";
startInfo.Arguments = @"cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";
process.StartInfo = startInfo;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();

4voto

Butters Points 927

J'ai trouvé quel était le problème.

startInfo.Arguments = @"cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";

J'ai ajouté /C au début de startInfo.Arguments et cela a bien fonctionné.

Voici la réponse qui a fonctionné.

 startInfo.Arguments = @"/C cd %systemroot%\system32" + " & " + @"cscript iisweb.vbs /create " + DirectoryPath + " " + SiteName + " /ap " + AppPoolName + " /b " + PortNumber + " & " + "exit";

0voto

Rukshan Perera Points 150

Tu veux exécuter tes commandes sur le fil principal ? Si oui, ne voulez-vous pas attendre que le thread d'arrière-plan se termine ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X