C#如何以更有效的方式压缩此代码

时间:2014-07-14 18:47:07

标签: c#

我试图ping多个网站(检查他们是否在线),我使用此代码对其进行ping操作,

        private bool Ping(string url)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Timeout = 3000;
            request.AllowAutoRedirect = false;
            request.Method = "HEAD";

            using (var response = request.GetResponse())
            {
                lblMiamiStatus.Text = "Online";
                lblMiamiStatus.ForeColor = Color.LimeGreen;
                return true;
            }
        }
        catch
        {
            lblMiamiStatus.Text = "Offline";
            lblMiamiStatus.ForeColor = Color.DarkRed;
            return false;
        }
    }
    private bool Ping2(string url)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Timeout = 3000;
            request.AllowAutoRedirect = false;
            request.Method = "HEAD";

            using (var response = request.GetResponse())
            {
                lblBayAreaStatus.Text = "Online";
                lblBayAreaStatus.ForeColor = Color.LimeGreen;
                return true;
            }
        }
        catch
        {
            lblBayAreaStatus.Text = "Offline";
            lblBayAreaStatus.ForeColor = Color.DarkRed;
            return false;
        }
    }

然后我需要用相应的网站调用每个ping,

private void tmrPing_Tick(object sender, EventArgs e)
    {
        Ping("site");
        Ping2("site2");
        Ping3("exc");
        Ping4("exc");
        Ping5("exc");
        Ping6("exc");
        Ping7("exc");
        Ping8("exc");
        Ping9("exc");
    }

关于如何浓缩这个的任何想法?

1 个答案:

答案 0 :(得分:2)

您似乎只是在代码中更改Label,您可以将其传递给您的方法,如:

private bool Ping(string url, Label label)
{
    try
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.Timeout = 3000;
        request.AllowAutoRedirect = false;
        request.Method = "HEAD";

        using (var response = request.GetResponse())
        {
            label.Text = "Online";
            label.ForeColor = Color.LimeGreen;
            return true;
        }
    }
    catch
    {
        label.Text = "Offline";
        label.ForeColor = Color.DarkRed;
        return false;
    }
}

然后将其称为:

Ping("site", lblMiamiStatus);

您甚至可以使用单独的方法向URL发送Head-Only http请求,并从该方法接收true / false,根据该结果您可以分配相应的标签内容。

相关问题