我有一个For Loop,它列出了一个集合中的项目(比如每页5个项目)。 用户可以通过单击其他页面按钮转到其他页面,但是如果当前页面仍在列表中,则会导致以下错误。集合更改时退出循环?
Collection was modified. Enumeration operation may not execute.
当用户在列表完成之前单击其他页面按钮时,如何中止当前页面的列表?
我试图使两个布尔变量称为“isListing”和“isSkipping”,然后我试图把For循环while语句是这样的:
Public Sub list()
lines.Items.Clear()
lines = New List(Of String)()
Dim reader As StringReader = New StringReader(listLines) 'listLines obtained from a file
Do Until reader.Peek = -1
lines.Add(reader.ReadLine)
Loop
isListing = True
While Not isSkipping AndAlso isListing
For Each line As String In lines
'List Page
Next
isListing = False
End While
End Sub
和页面按钮,如:
Private Sub btnPage_Click(...) ...
If isListing Then isSkipping = True Else isSkipping = False
list()
End Sub
但是这会导致相同的错误。
任何帮助表示赞赏〜!
您是否改变'For Each'中的'lines'(添加,删除,修改)?这是不允许的。这是一个多线程应用程序(如同ASP.NET一样)吗?线是共享的吗? –
'线条'在循环中没有改变,但是它从外部改变,当list()被调用时被清除,然后添加新的项目。我会更新我以前的帖子以反映这一点。 它是多线程的,我使用线程类来调用UI更改..这是很多我认为不包括的代码。 – Sakuya