alireza barzin Ответов: 1

Многопоточный пинг ИПС с#


Я хочу пропинговать список IP-адресов, но он не работает.

Я уже использую эту функцию в консольном приложении, и она работает.

string[] addresses = { "192.168.1.2", "192.168.1.3", "192.168.1.4" };
    void show()
    {
        List<Task<PingReply>> pingTasks = new List<Task<PingReply>>();
        foreach (var address in addresses)
        {
            pingTasks.Add(PingAsync(address));
        }

        Task.WaitAll(pingTasks.ToArray());
        int i = 0;
        listView1.Clear();
        listView1.Columns.Add("Device IP", 100);
        listView1.Columns.Add("ping", 60);
        foreach (var pingTask in pingTasks)
        {
            string[] A = { addresses[i], pingTask.Result.RoundtripTime.ToString() };
            ListViewItem item = new ListViewItem(A);
            listView1.Items.Add(item);
            i++;
        }
    }

    Task<PingReply> PingAsync(string address)
    {
        var tcs = new TaskCompletionSource<PingReply>();
        Ping ping = new Ping();
        ping.PingCompleted += (obj, sender) =>
        {
            tcs.SetResult(sender.Reply);
        };
        ping.SendAsync(address, new object());
        return tcs.Task;
    }


пожалуйста, помогите мне.

спасибо

Что я уже пробовал:

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

Richard MacCutchan

Используйте свой отладчик, чтобы отследить точку, в которой он перестает работать.

1 Ответов

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Цитата:
Я хочу пропинговать список IP-адресов, но он не работает.
Возможно ли, что ПК просто неопределенно ждет окончания всех потоков ? Отладчик сделает это за вас.