2013-05-28 126 views
1

我有一個程序將在IIS 6中創建一個新網站。 如何讓我的命令執行等待完成。 目前它不會等待,所以網站不會被創建。從C#執行命令並等待完成執行

因爲目錄路徑SITENAMEAppPoolName,並PORTNUMBER通過運行應用程序時使用提供我不能使用.bat文件。

下面的代碼在後臺線程上執行,而不是在主線程上執行。

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(); 
+3

WaitForExit? http://msdn.microsoft.com/en-us/library/system.diagnostics.process.waitforexit.aspx –

+0

我有WaitForExit。但它不起作用。它是否需要使用後臺線程做些什麼? – Butters

回答

0

你想在主線程上運行你的命令嗎?如果是這樣,你不想等到後臺線程完成?

+0

我不想在主線程上運行我的命令。 – Butters

3

我想出了問題所在。

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

我在startInfo.Arguments年初增加/C和它的工作就好了。

這是有效的答案。

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