У меня есть большой список IP-адресов в таблице данных, и я должен пинговать их так быстро, я использовал этот код:
public bool PingIP(string IP)
{
bool result = false;
try
{
Ping ping = new Ping();
PingReply pingReply = ping.Send(IP);
if (pingReply.Status == IPStatus.Success)
result = true;
}
catch
{
result = false;
}
return result;
}
затем я вызываю его в цикле while:*
private void CheckNetworkState()
{
while (rowindexping > -1)
{
if (rowindexping == tbl_ClientInfo.Rows.Count)
{
rowindexping = -1;
return;
}
string ip = tbl_ClientInfo.Rows[rowindexping]["clientip"].ToString();
if (!PingIP(ip))
{
do something
}
rowindexping++;
Thread.Sleep(100);
}
}
Поскольку я хочу выполнить эту работу на фоне моего проекта, я вызываю класс в потоке:
threadping = new Thread(CheckNetworkState);
threadping.IsBackground = true;
threadping.Start();
Моя проблема в том, что это занимает так много времени ине работает на заднем плане.Я имею в виду, что система занята, пока все IP-адреса в tbl_clientinfo не пройдут через класс ping.я хочу, чтобы система проверила все строки, так как я работаю с другой частью моего проекта.
Правильно ли я сделал?