У меня есть список IP с неизвестным количеством элементов (может быть 1578, 500, 1253 ....).
Я хочу создать цикл, который будет каждый раз брать только 10 элементов и проверять ping к ним (так что сервер не застрянет).
После пинга и если IP-адрес подключен, я запустю на нем больше функций.
Итак, что мне делатьв для условия?
//a list of IP that will be online
List<string> Online = new List<string> ();
//temp list to get 10 IP everytime
List<string> Top10 = new List<string>();
//this a list from sql
List<string> ListIPs = new List<string>();
//want to run the command for only 3 in each time
for (int i = 0; i < ListIPs.Count - 8; i++)
{
Top3 = ListIPs.GetRange(i, 9);
System.Threading.Tasks.Parallel.ForEach(Top10, site =>
{
Ping p = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 200;
PingReply reply = p.Send(site, timeout, buffer);
if (reply.Status == IPStatus.Success)
{
Online.Add(site + "," + reply.Status.ToString() + " , " + reply.RoundtripTime.ToString());
}
});///end of Threading
// Console.WriteLine("Finish time " + i);
i = i + 9;
// foreach (var v in Top10)
// {
// Console.WriteLine(v);
// }
Top10.Clear();
} //end of cutting the list to 10 each time
Это работает для списка с 1548 - я удаляю последние 8, чтобы увидеть, что он работает, но как мне сделать это автоматически?
И не зная количества элементов?
Может быть что-то вроде:
list.count/10
и затем взять десятичную часть?
Например:
32/10
часть int равна 3
, а десятичная часть будет 2
Затем изменить условие for?
или взять 2 и добавить 10 - 2 = 8
нулей?