【发布时间】:2015-01-30 03:47:11
【问题描述】:
我正在制作一个程序来检查我公司服务器的状态。 我的服务器信息将加载到 DgvServer 我使用 for 循环来检查服务器的状态:
private void btnCheck_Click(object sender, EventArgs e)
{
try
{
string ip = "";
Ping ping = new System.Net.NetworkInformation.Ping();
PingReply pingreplay = null;
for (int i = 0; i < dgvServer.Rows.Count; i++)
{
//Get IP address
ip = dgvServer.Rows[i].Cells[1].Value.ToString();
pingreplay = ping.Send(ip,10000);
if (pingreplay.Status == IPStatus.Success)
{
//update status of server
dgvServer.Rows[i].Cells[4].Value = "Online";
}
else
//Update status of server
dgvServer.Rows[i].Cells[4].Value = "Offline";
}
}
catch(Exception ex)
{
MessageBox.show(ex.Message);
}
}
如果所有服务器都在线就可以,但是如果某些服务器离线,则此代码需要很长时间才能完成。所以,我想为每个循环使用一个线程来检查每个服务器的状态。我不使用并行,因为这是 .net 2.0 程序。 请给我一些建议以使用线程改进此代码。 非常感谢!
【问题讨论】:
标签: c# multithreading .net-2.0