2017-09-14 87 views
0

我有這樣的代碼:C#不一致

string winpath = Environment.GetEnvironmentVariable("C:"); 
int i = 0; 

Console.WriteLine("How much would you like to destroy your pc?"); 

i = Convert.ToInt32(Console.ReadLine()); 
int j = 0; 

while (j < i) 
{ 
    Process.Start(winpath + @"\Windows\System32\calc.exe"); 
    j++; 
} 

我希望讓用戶選擇多少個計算器打開,我輸入1,得到一個計算器,輸入2,我仍然得到一個計算器,輸入3並得到一個計算器,輸入5得到2個計算器。我也嘗試了for循環,但結果相同。

+2

始終使用'Path.Combine'到Concat的你的路徑字符串。 – LarsTech

+0

另外,System32將會在搜索路徑中,所以你只需要'Process.Start(「calc.exe」)'。 –

+1

那麼你的實際問題是什麼?您的代碼與您的要求不符,但您不會說什麼是「不一致」。 – slugster

回答

0

您很可能需要在啓動過程之間添加一個很短的延遲。 while循環運行速度非常快,以至於Windows無法及時響應進程啓動請求。

嘗試在每個Process.Start()後添加一個Thread.Sleep()

using System.Threading; 

for (int i = 0; i < total; i++) 
{ 
    Process.Start("calc.exe"); // anything in /system32 is already on the path 
    Thread.Sleep(100); // 100 milliseconds 
} 
+0

這工作,雖然我用了1000毫秒的延遲,謝謝。 – Oliver

2

你的問題不是循環,而是你需要計算循環的最大值。在你的代碼 展望,並根據您的多少計算的情況下,要根據所輸入的數字說明,你需要使用整數除法:

i = Convert.ToInt32(Console.ReadLine()); 
int j = 0; 
while (j < i/2) 
{ 
    ... 
}