gpt4 book ai didi

vb.net - 集合已修改;枚举操作可能无法执行

转载 作者:行者123 更新时间:2023-12-02 05:08:15 29 4
gpt4 key购买 nike

我无法深入了解此错误,因为它仅发生在一种情况下,而且我找不到任何可能导致该错误的代码。

我有一个 3.5 Web 服务,我正在从多线程 CAB 客户端调用该服务。我对 Web 服务进行了一系列单元测试(来自 3.5 和 2.0 代码),并且运行良好。然而,在实际应用中,90%的时间它都不起作用,而剩下的10%的时间它决定起作用。

代码:

Friend Function ExecuteSearch(ByVal query As String) As List(Of SomeObject)
Dim searchResults As List(of Object) = _searcher.UserSearch(query)
Return searchResults
End Function

// In Searcher
Public Function UserSearch(ByVal query As String) As List(Of SomeObject)
Return Translate(Search.GetResults(query))
End Function

// In Search
Public Function GetResults(ByVal query As String) As List(Of SomeObject)
Dim service As New FinderService.FinderService()
Dim results As New List(Of String)
Dim serviceResults As IEnumerable(Of String) = service.Search(query) // <-- ERRORS OUT HERE

results.AddRange(serviceResults)

Return results
End Function

// In the service
Public Function Search(ByVal query As String) As IEnumerable(Of String)
Initialize() // Initializes the _accounts variable
Dim results As New List(of String)
For Each account As User In _accounts
If a bunch of conditions Then
results.Add(account.Name)
End IF
End For

Return results
End Function

断点命中这些代码(按此顺序)。出错的行位于“GetResults”方法中。

如有任何帮助,我们将不胜感激。

最佳答案

啊,Heisenbugs :D

显然_accounts 在循环期间被修改。您可以通过这样做来缓解

For Each account As User In _accounts.ToList()

因此创建并枚举当前 _accounts 的副本,而不是可能更改的实际集合

关于vb.net - 集合已修改;枚举操作可能无法执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322232/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com