使用C#创建远程安装程序应用程序。首先,我正在进行ping检查以确保计算机处于活动状态,然后再对其进行安装。我稍后会实施服务检查。
我需要创建一个基于ping状态成功(goodPing)和失败(badPing)的字符串数组,因此我可以在另一个将运行安装的foreach循环中使用它。
foreach (string singleComputer in computerArray)
{
// Ping all computers
Ping ping = new Ping();
PingReply pingresult = ping.Send(singleComputer);
if (pingresult.Status.ToString() == "Success")
{
string[] goodPing = new string[] {"singleComputer"};
}
else if (pingresult.Status.ToString() != "Success")
{
string[] badPing = new string[] {"singleComputer"};
}
}
基本上,我确保计算机可以ping通,将“好”和“坏”计算机分开。 computerArray是从文件创建的字符串数组。
这是我在创建数组后想要的样子:
foreach (string computer in goodPing)
{
//run installation code here.
}
显然,我不能调用goodPing,因为它是在if语句中创建的。请告诉我我做错了什么。
答案 0 :(得分:2)
在运行循环之前,您需要创建一次数组。数组的问题在于没有简单的方法来改变数组的大小,并且您事先并不知道每个数组中有多少条记录。所以我建议使用List<T>
而不是数组:
List<string> goodPing = new List<string>();
List<string> badPing = new List<string>();
Ping ping = new Ping();
foreach (string singleComputer in computerArray)
{
// Ping all computers
PingReply pingresult = ping.Send(singleComputer);
if (pingresult.Status.ToString() == "Success")
{
goodPing.Add(singleComputer);
}
else if (pingresult.Status.ToString() != "Success")
{
badPing.Add(singleComputer);
}
}
现在,您可以使用好的ping列表来完成您需要做的事情:
foreach (string computer in goodPing)
{
//run installation code here.
}
答案 1 :(得分:0)
您需要使用通用列表而不是数组,并且需要在for循环之前声明它们,以便在它之后可以访问它们。
List<string> goodPings = new List<string>();
List<string> badPings = new List<string>();
foreach (string singleComputer in computerArray)
{
// Ping all computers
Ping ping = new Ping();
PingReply pingresult = ping.Send(singleComputer);
if (pingresult.Status.ToString() == "Success")
{
goodPings.Add(singleComputer); // and don't forget to use the variable singleComputer here, not the literal string "singleComputer".
}
else if (pingresult.Status.ToString() != "Success")
{
badPings.Add(singleComputer);
}
}