C# C服务器性能:如何退出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

app.config文件中有7个服务器名称和端口。我试图点击服务器以获得所需的时间。我得到了预期的结果,但我无法摆脱foreach循环。结果不断重复。

您发布的代码没有问题。一旦您删除了所有不必要或与例程核心无关的代码,您就剩下:

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