Как я могу исправить свою петлю for?
Эй, ребята, у меня есть Порблем с моими передними петлями... в заданном диапазоне, например 197.232.178.0 - 255.255.255.255, мои циклы for начинают пропускать шаги... Результаты в DGV начинают показывать только 197.242.186.0, и похоже, что все остальные IP-адреса были просто пропущены...
Я понятия не имею, где именно происходит сбой...
Приведенный ниже код является целой функцией и берет все не объявленные vars из общедоступных vars, которые были установлены в других субподрядах.
Private Sub NwS_BackgroundWorker_DoWork() Handles NwS_BackgroundWorker.DoWork Dim NwS_StartSplit = Split(NwS_StartIP, ".") Dim NwS_EndSplit = Split(NwS_EndIP, ".") Dim NwS_IPExport For A As Int64 = NwS_StartSplit(0) To NwS_EndSplit(0) For B As Int64 = NwS_StartSplit(1) To NwS_EndSplit(1) For C As Int64 = NwS_StartSplit(2) To NwS_EndSplit(2) For D As Int64 = NwS_StartSplit(3) To NwS_EndSplit(3) ' Preparing New Thread NwS_ThreadCount += 1 NwS_IPExport = A & "." & B & "." & C & "." & D ' Creating and starting new backgroundthread Dim oThread As New Thread(AddressOf Me.NwS_BackgroundPing) oThread.IsBackground = True oThread.Start(NwS_IPExport) If NwS_BackgroundWorker.CancellationPending = True Then Exit For End If Next ' Handbrake for decreasing CPU Usage While NwS_ThreadList.Count > 0 And NwS_Handbrake = True If NwS_BackgroundWorker.CancellationPending = True Then Exit For End If End While Next Next Next End Sub Private Sub NwS_BackgroundPing(ByVal NwS_IPExport) ' Report the Working State to the ThreadList Dim Thread_Name As String = "Thread: " & NwS_ThreadCount NwS_ThreadList.Add(Thread_Name) ' Set NetworkScan Variabless for Ping Request Dim NwS_StatusImage As String = " " Dim NwS_StatusString As String = " " Dim NwS_HostName As String Dim NwS_MacImport As String Dim NwS_MacAddress As String Dim Result As Net.NetworkInformation.PingReply Dim SendPing As New Net.NetworkInformation.Ping ' Try to send Ping Request and resolve Hostname & Mac Address Try Result = SendPing.Send(NwS_IPExport, 120) If Result.Status = Net.NetworkInformation.IPStatus.Success Then NwS_StatusImage = "C:\Users\Electro_Attacks\Desktop\VB Projekt\pc.png" NwS_StatusString = "Used" NwS_HostName = System.Net.Dns.GetHostEntry(NwS_IPExport).HostName Dim ip = System.Net.IPAddress.Parse(NwS_IPExport) Dim arp = New ArpRequest(ip) NwS_MacImport = arp.GetResponse().ToString() If NwS_MacImport <> Nothing Then NwS_MacAddress = Regex.Replace(NwS_MacImport, "(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})", "$1:$2:$3:$4:$5:$6") End If Else NwS_StatusImage = "C:\Users\Electro_Attacks\Desktop\VB Projekt\No PC.png" NwS_StatusString = "Free" NwS_HostName = "" End If ' Catching all exceptions Catch ex As Exception If NwS_StatusImage = " " Then NwS_StatusImage = "C:\Users\Electro_Attacks\Desktop\VB Projekt\No PC.png" End If If NwS_StatusString = " " Then NwS_StatusString = "Unknown" End If End Try ' Add results to Datagrid and remove Thread from List Me.Invoke(New MethodInvoker(Sub() DataGridView1.Rows.Add(Image.FromFile(NwS_StatusImage), NwS_IPExport, NwS_HostName, NwS_MacAddress, NwS_StatusString))) ' CleanUP NwS_StatusImage = "" NwS_StatusString = "" NwS_HostName = "" NwS_MacImport = "" NwS_MacAddress = "" NwS_ThreadList.Remove(Thread_Name) Threading.Thread.CurrentThread.Abort() End Sub
Что я уже пробовал:
Я уже пробовал разные диапазоны, сбой появляется около 192.168.(182-190).0 и приводит мой wohle UI в невосприимчивость. Даже точка остановки отладки не может перехватить цикл for, как только он достигнет этой точки...