-1

为什么循环停止, on proov = 1,但我让它循环到 10 点?它应该在每轮中添加 +1,但程序在 1 处停止。

Dim proov As Integer
        proov = 0

        Dim myClientMachineAddressList = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName())
        Do
            Dim myClientMachineIP = myClientMachineAddressList.AddressList(proov)
            If myClientMachineIP.AddressFamily = Sockets.AddressFamily.InterNetwork Then
                Label2.Text = myClientMachineIP.ToString()
            Else
                TextBox2.Text = "IP does not equal to IPv4"
            End If
            Thread.Sleep(1000)
            proov = proov + 1
            TextBox3.Text = proov.ToString()
        Loop Until proov = 10
4

3 回答 3

1

如果您的地址列表少于 10 个,您的代码将因索引超出范围异常而失败。

将您的测试条件更改为

   Do
       ....
   Loop Until proov >= myClientMachineAddressList.AddressList.Length
于 2013-09-02T11:29:26.763 回答
1

像这样试试

    Dim proov As Integer = 0
    Dim myClientMachineAddressList As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName())
    Do While proov < myClientMachineAddressList.AddressList.Length
        Dim myClientMachineIP As System.Net.IPAddress = myClientMachineAddressList.AddressList(proov)
        'your code here
        'Debug.WriteLine(myClientMachineIP.ToString)
        proov += 1
    Loop
于 2013-09-02T12:05:05.670 回答
0

Varocarbas 的评论很有帮助!谢谢好先生!引用:

很可能 Thread.Sleep 上面的代码会引发错误。要确认此问题,请将所有这些代码放在 try...catch 块中,并确认循环一直持续到结束

于 2013-09-02T12:55:12.527 回答