我试图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");
}
关于如何浓缩这个的任何想法?
答案 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,根据该结果您可以分配相应的标签内容。