Распараллеливание вызовов SendAsync (возможно с использованием LINQ) - C#
Формулировка задачи:
Несколько дней ищу ответ на вопрос : как хорошо распределить вызовы Но он работает медленно, у меня ~17 секунд на 256 адресов.
Ping.SendAsync
. Последний вариант который я пробовал -// workingIPs - массив IPAddress var temp = from ip in workingIPs.AsParallel().WithDegreeOfParallelism(16) let p = new Ping().Send(ip, 5) where (p.Status == IPStatus.Success) select p.Address; List<IPAddress> result = temp.ToList<IPAddress>(); return result;
Пожалуйста
, помогите его доделать, сил уже нет.Решение задачи: «Распараллеливание вызовов SendAsync (возможно с использованием LINQ)»
textual
Листинг программы
//workingIPs - массив IPAddress //result is global variable List<IPAddress> result = new List<IPAddress>(); Ping ping = new Ping(); ping.PingComplated = (sender, e) => { if (e.Error == null) //doing something with IP, that stored in e.UserState; lock (result) result.Add(e.UserState as IpAddress); }; foreach (var ip in workingIPs) ping.SendAsync(ip, 5, ip);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д