2015-07-11 75 views
0

所以,我是VB.NET的新手,我想创建一个简单的程序来ping和扫描打开的端口。但是,ping命令就可以了,但扫描的端口不工作就一直说“的ThreadStart不会接受一个参数”,我不知道如何解决它这个.Anyways端口扫描部分的代码:ThreadStart不接受参数

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
    For i As Integer = Start1.Value To End1.Value 
     ' TT= temp threading 
     Control.CheckForIllegalCrossThreadCalls = False 
     Dim TT As New System.Threading.Thread(AddressOf ScanPort) 
     TT.IsBackground = True 
     TT.Start(i) 
    Next 
End Sub 

回答

1

? ...所以让它接受一个参数?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    For i As Integer = start1.Value To end1.Value 
     ' TT= temp threading 
     Control.CheckForIllegalCrossThreadCalls = False 
     Dim TT As New System.Threading.Thread(AddressOf ScanPort) 
     TT.IsBackground = True 
     TT.Start(i) 
    Next 
End Sub 

Private Sub ScanPort(ByVal portToScan As Integer) 
    Debug.Print("Scanning Port: " & portToScan) 
    System.Threading.Thread.Sleep(1000) 
End Sub 

随着选项严格上,它会是这样,而不是:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    For i As Integer = CInt(start1.Value) To CInt(end1.Value) 
     ' TT= temp threading 
     Control.CheckForIllegalCrossThreadCalls = False 
     Dim TT As New System.Threading.Thread(New ParameterizedThreadStart(AddressOf ScanPort)) 
     TT.IsBackground = True 
     TT.Start(i) 
    Next 
End Sub 

Private Sub ScanPort(ByVal portToScan As Object) 
    Dim port As Integer = CType(portToScan, Integer) 
    Debug.Print("Scanning Port: " & port) 
    System.Threading.Thread.Sleep(1000) 
End Sub 
+0

要注意的是这不能当选项严格上编译。 – Ripple

+0

确实...你会将参数类型更改为Object,并将其转换为使用其他变量的正确类型。 –