Асинхронный пинг множества хостов - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь написать пингер. Есть множество хостов host[] которые нужно периодически пинговать, и есть массив pingTime[], который нужно заполнять результатами пинга. Как передать делегату значение переменной i? Текущий код неправильный и приводит к ошибке.
for (byte i = 0; i < allhosts; i++)
{
        Ping ping = new Ping();
        ping.PingCompleted += delegate(object sender, PingCompletedEventArgs e)
        {
                pingTime[i] = Convert.ToInt16(e.Reply.RoundtripTime);
                (ping as IDisposable).Dispose();
        }
        ping.SendAsync(host[i], timeout, new AutoResetEvent(false));
}

Решение задачи: «Асинхронный пинг множества хостов»

textual
Листинг программы
for (byte i = 0; i < allhosts; i++)
{
        Ping ping = new Ping();
        int n = i;
        ping.PingCompleted += delegate(object sender, PingCompletedEventArgs e)
        {
                pingTime[n] = Convert.ToInt16(e.Reply.RoundtripTime);
                (ping as IDisposable).Dispose();
        }
        ping.SendAsync(host[i], timeout, new AutoResetEvent(false));
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5