Сканирование компьютеров в сети в отдельном потоке - Visual Basic .NET
Формулировка задачи:
На форме есть listbox. в котором выведены имена компьютеров в сети. затем кодом:
разбиваю их на активные и не активные и вывожу их в Listbox2 и Listbox3. Но при это программа зависает. Как избавить ее от зависания? Смотрел предыдущие похожие темы, там использовалось BackgroundWorker. но по аналогии я сделать не смог. помогите мне реализовать. приложу код, который есть у меня сейчас. помогите исправить ошибку, или посоветуйте что нибудь еще.
а ошибку выдает такую:
Листинг программы
- For Each item In ListBox1.Items
- Try
- If My.Computer.Network.Ping(item.ToString) Then
- ListBox2.Items.Add(item.ToString)
- Else
- ListBox3.Items.Add(item.ToString)
- 'MsgBox(item.ToString)
- End If
- Catch ex As Exception
- ListBox3.Items.Add(item.ToString)
- 'MsgBox(item.ToString)
- End Try
- Next
Листинг программы
- Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
- If BackgroundWorker1.IsBusy = True Then
- Exit Sub
- Else
- BackgroundWorker1.RunWorkerAsync()
- 'ProgressBar1.Visible = True
- ListBox2.Items.Clear()
- ListBox3.Items.Clear()
- End If
- End Sub
- Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
- For Each item In ListBox1.Items
- Try
- If My.Computer.Network.Ping(item.ToString) Then
- ListBox2.Items.Add(item.ToString)
- Else
- ListBox3.Items.Add(item.ToString)
- End If
- Catch ex As Exception
- ListBox3.Items.Add(item.ToString)
- End Try
- Next
- End Sub
- Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
- ProgressBar1.Visible = False
- End Sub
Решение задачи: «Сканирование компьютеров в сети в отдельном потоке»
textual
Листинг программы
- CheckForIllegalCrossThreadCalls = False
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д