MrD*_*ger 2 vb.net for-loop enumeration
我在这里有一些代码,在下一个声明中,它给了我一个错误说:
已修改此枚举器绑定的列表.只有在列表不更改时才能使用枚举器.
我真的不知道如何进一步解释这个问题,但如果你需要我,我可以试试.
For Each itemChecked In storedAuthorsListbox.CheckedItems
Dim selectedAuthor As String = storedAuthorsListbox.SelectedItem.ToString()
Dim authorFile As String = "Authors\" & itemChecked.ToString()
Dim document As XmlReader = New XmlTextReader(authorFile)
metaInfo &= "[Author]" & vbNewLine
While (document.Read())
Dim type = document.NodeType
If (type = XmlNodeType.Element) Then
If (document.Name = "Name") Then
metaInfo &= "Name=" & document.ReadInnerXml.ToString() & vbNewLine
ElseIf (document.Name = "Website") Then
metaInfo &= "Website=" & document.ReadInnerXml.ToString() & vbNewLine
ElseIf (document.Name = "Notes") Then
metaInfo &= "Notes=" & document.ReadInnerXml.ToString() & vbNewLine
End If
End If
End While
document.Close()
Next
Run Code Online (Sandbox Code Playgroud)
某些代码在迭代时会改变storedAuthorsListbox.该代码在代码段中不可见.确保发布的代码没有在工作线程中运行,这是不合法的.它肯定像你在工人中运行的那种代码一样嘎嘎作响.
通用的解决方案是制作项目的副本并从该副本而不是控件中工作:
Dim copy = storedAuthorsListBox.SelectedItems.OfType(Of String)().ToList()
For Each itemchecked In copy
'' etc..
Next
Run Code Online (Sandbox Code Playgroud)
如果它在工作线程中运行,则将副本传递给worker.
| 归档时间: |
|
| 查看次数: |
3682 次 |
| 最近记录: |