Arrays 检查循环中的代码工作不正常

Arrays 检查循环中的代码工作不正常,arrays,vb.net,Arrays,Vb.net,我制作了一个能够在网页中下载值的代码,它运行良好。由于这些值是实时获取的,也就是说,只有在实际发生更改时才执行数据下载,因此我需要确定某个值是否发生更改。 然后,我创建了一个代码,允许我使用更新的值和使用旧值的数组的所有元素进行检查。 代码实际上检测给定的结果何时发生了更改,但由于某种奇怪的原因,消息似乎无限大,好像它被困在不带参数的foor中,这非常奇怪 For Each abc As Country_Data In lista For Each xyz As

我制作了一个能够在网页中下载值的代码,它运行良好。由于这些值是实时获取的,也就是说,只有在实际发生更改时才执行数据下载,因此我需要确定某个值是否发生更改。 然后,我创建了一个代码,允许我使用更新的值和使用旧值的数组的所有元素进行检查。
代码实际上检测给定的结果何时发生了更改,但由于某种奇怪的原因,消息似乎无限大,好像它被困在不带参数的foor中,这非常奇怪

For Each abc As Country_Data In lista
                For Each xyz As Country_Data In vecchia_lista
                    If abc.casa = xyz.casa And abc.ospite = xyz.ospite Then
                        If abc.Result <> xyz.Result Then
                            MsgBox(abc.casa & " - " & abc.ospite & " -- " & abc.Result)
                            Exit For
                        End If
                    End If
                Next
            Next

如何解决此问题?

根据您的评论,我想您只希望看到一个消息框,当它发现第一个结果已更改的情况时,即使之后可能还有其他情况

您使用的出口仅从内部For循环退出,因此外部For循环继续循环,这可能就是您正在观察的

您可以这样做:

Dim keepLooping As Boolean = True

For Each abc As Country_Data In lista
    For Each xyz As Country_Data In vecchia_lista
        If abc.casa = xyz.casa And abc.ospite = xyz.ospite Then
            If abc.Result <> xyz.Result Then
                MsgBox(abc.casa & " - " & abc.ospite & " -- " & abc.Result)
                keepLooping = False
                Exit For
            End If
        End If
    Next

    If (Not keepLooping) Then Exit For
Next

这样,当您要停止循环时,它将设置布尔标志,外部循环将观察到该标志,并使其退出。

消息显示为无限大,好像它被卡在不带参数的foor中-您能澄清一下吗?从某种意义上说,消息只应出现一次,它精确地指示结果x是否改变。在这种情况下,它会无休止地进行,就像说;;很抱歉,我不明白。它似乎工作得很好,即使消息在几分钟后再次出现。您认为,如果我在打印消息后立即添加lista.clear可以解决此问题?消息不应再次出现。你一定在做一些你没有在这里展示的事情。我把我的整个类粘贴在这里:如果你有时间,请检查代码。这对我来说是个大问题。
Dim keepLooping As Boolean = True

For Each abc As Country_Data In lista
    For Each xyz As Country_Data In vecchia_lista
        If abc.casa = xyz.casa And abc.ospite = xyz.ospite Then
            If abc.Result <> xyz.Result Then
                MsgBox(abc.casa & " - " & abc.ospite & " -- " & abc.Result)
                keepLooping = False
                Exit For
            End If
        End If
    Next

    If (Not keepLooping) Then Exit For
Next