C# C服务器性能:如何退出foreach循环
app.config文件中有7个服务器名称和端口。我试图点击服务器以获得所需的时间。我得到了预期的结果,但我无法摆脱foreach循环。结果不断重复。您发布的代码没有问题。一旦您删除了所有不必要或与例程核心无关的代码,您就剩下:C# C服务器性能:如何退出foreach循环,c#,C#,app.config文件中有7个服务器名称和端口。我试图点击服务器以获得所需的时间。我得到了预期的结果,但我无法摆脱foreach循环。结果不断重复。您发布的代码没有问题。一旦您删除了所有不必要或与例程核心无关的代码,您就剩下: if (Properties.Settings.Default.ICMP_SERVER_LIST.ToString() != string.Empty) { string ServersToPing = Properties.Settings.Default.I
if (Properties.Settings.Default.ICMP_SERVER_LIST.ToString() != string.Empty)
{
string ServersToPing = Properties.Settings.Default.ICMP_SERVER_LIST;
string[] ServerArrays = ServersToPing.Split(new Char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
foreach (string server in ServerArrays)
{
string host = server.Substring(0, server.IndexOf(':'));
int port = Convert.ToInt32(server.Substring(server.LastIndexOf(":") + 1).ToString());
string[] serverInfo = ServersToPing.Split(new Char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
string res = PingServerViaICMP(server, RespTimeOut);
Ping pingreq = new Ping();
PingReply pingrep = pingreq.Send(host, 30 * 1000);
res = string.Format("{0}:time={1}ms", pingrep.Address.ToString(),
pingrep.RoundtripTime.ToString());
txtLog.Text += host + ": " + res + " " + Environment.NewLine;
}
Array.Clear(ServerArrays, ServerArrays.GetLowerBound(0), ServerArrays.GetLowerBound(0));
ServersToPing = "";
}
if (some_success_validation)
{
break;
}
这段代码运行得很好
在你关于同一主题的文章中,你似乎是在用计时器启动它。这将导致代码被反复执行 如果在最后清除数组,为什么会有foreach循环?根据这句话,我猜你甚至不想要一个循环。您是否尝试对每个服务器ping一次?你的代码不清楚;你想做什么?我试着点击7台服务器,并试图获得点击所需的时间。我得到了预期的输出,但它不断重复相同的值。我猜它不会退出for each循环。是的,我用了定时器。那么,我还有其他方法可以做到这一点吗?如果您只希望这种情况发生一次,请不要在tick方法的末尾设置Timer.Enabled=true。否则,如果我想添加toolstripstatus标签,显示当前正在运行的服务器的详细信息,则您的计时器将在上述代码中的指定间隔处不断被调用。我该怎么做?
string ServersToPing = "localhost:80 localhost:443";
string[] ServerArrays = ServersToPing.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string server in ServerArrays)
{
string host = server.Substring(0, server.IndexOf(':'));
Ping pingreq = new Ping();
PingReply pingrep = pingreq.Send(host, 30 * 1000);
Console.WriteLine("{0}:time={1}ms", pingrep.Address.ToString(), pingrep.RoundtripTime.ToString());
}
Console.ReadLine();