1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
Public startPort As Integer
Public endPort As Integer
Public IPAddress As String
Public MaxValue As Integer
Public CurrentValue As Integer
'Hier der Aufruf
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BackgroundWorker1.WorkerReportsProgress = True
BackgroundWorker1.WorkerSupportsCancellation = True
'Dieses System wird gescannt
IPAddress = "10.0.0.1"
startPort = 1
endPort = 200
'Um einen evtl. Überlauf vorzubeugen
MaxValue = endPort + 1
'Progressbar Aktualisieren
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = MaxValue
For startPort = startPort To endPort
Me.BackgroundWorker1.RunWorkerAsync()
'Da ein Backgroundworker immer nur eine
'Aufgabe ausführen kann, warten wir hier
'bis er fertig ist und mit der nächsten
'Aufgabe weitermachen kann
While Me.BackgroundWorker1.IsBusy = True
Application.DoEvents()
End While
Next
Me.ProgressBar1.Value = 0
End Sub
'Der Backgroundworker der die eigentliche Arbeit ausführt
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
Dim lvi As New ListViewItem(startPort)
Dim tryToConnect As System.Net.Sockets.UdpClient = New System.Net.Sockets.UdpClient(IPAddress, startPort)
lvi.SubItems.Add("is opend")
lvi.ForeColor = Color.Red
BackgroundWorker1.ReportProgress(startPort, lvi)
Catch ex As Exception
Dim lvi As New ListViewItem(startPort)
lvi.SubItems.Add("is Closed")
lvi.SubItems.Add(ex.Message)
lvi.ForeColor = Color.Green
BackgroundWorker1.ReportProgress(startPort, lvi)
End Try
End Sub
'Da der Backgroundworke nicht auf die Steuerelemente
'zugreifen kann und darf, hier die entsprechende
'Vorgehensweise
Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
Dim lvi As New ListViewItem
'Daten vom BackGroundworker
lvi = e.UserState
Me.ListView1.Items.Add(lvi)
lvi.EnsureVisible()
'Progressbar aktualisieren
Me.ProgressBar1.Value = e.ProgressPercentage
End Sub
|