开发者

Enumeration in vb.net

while executing this below lines i got an error. Error:

Collection was modified; enumeration operation may not execute. 

Help me to solve this.

Dim i As IEnumerator
    Dim item As DataGridItem
    Dim bChk As Boolean = False
    i = dgOfferStatus.Items.GetEnumerator
    For Each item In dgOfferStatus.Items
        i.MoveNext()
        item = i.Current
        item = CType(i.Current, DataGridItem)
        Dim chkItemChecked As New CheckBox
        chkItemChecked = CType(item.FindControl("chkItemChecked"), CheckBox)
        If chkItemChecked.Checked = True Then
            Try
                bChk = True
                lo_ClsInterviewProcess.JobAppID = item.Cells(1).Text
                lo_ClsInterviewProcess.candId = item.Cells(9).Text
                Dim str, strSchedule1, strSchedule As String
                Dim dspath As DataSet
                Dim candidateId As Integer
                ''Moving the resume to Completed folder

                ObjInterviewAssessment = New ClsInterviewAssessment
                dspath = ObjInterviewAssessment.GetOffComPath(CInt(lo_ClsInterviewProcess.JobAppID), "GetHoldPath")
                If dspath.Tables(0).Rows.Count > 0 Then
                    If Not IsDBNull(dspath.Tables(0).Rows(0).Item(0)) Then
                        str = dspath.Tables(0).Rows(0).Ite开发者_如何学Cm(0)
                        strSchedule1 = str.Replace("Hold", "Completed")
                    End If
                End If

                Dim str1 As String
                str1 = Server.MapPath(str).Trim
                strSchedule = Server.MapPath(strSchedule1).Trim

                Dim file1 As File
                If file1.Exists(str1) Then
                    If file1.Exists(strSchedule) Then
                        file1.Delete(strSchedule)
                    End If

                    file1.Move(str1, strSchedule)
                End If
                ''
                intResult = lo_ClsInterviewProcess.UpdateApproveStatus(Session("EmployeeId"), strSchedule1)
                BindHoldGrid()
                If intResult > 0 Then


                    Alert.UserMsgBox("btnsearch", "Status Updated")
                Else
                    Alert.UserMsgBox("btnsearch", "Status not Updated")
                End If
            Catch ex As Exception
                ExceptionManager.Publish(ex)
                Throw (ex)
            End Try
        End If
    Next
    If bChk = False Then
        Alert.UserMsgBox("btnsearch", "Please Select any Candidate")
    End If
    'Catch ex As Exception
    '    ExceptionManager.Publish(ex)
    'End Try
End Sub


Look at this part of your code. I think it's what causes your exception.

Dim i As IEnumerator
...
Dim item As DataGridItem
...
i = dgOfferStatus.Items.GetEnumerator
For Each item In dgOfferStatus.Items
    i.MoveNext()
    item = i.Current  ' <-- here be dragons!? '
    ...
Next

What you're doing seems a little strange. You iterate through the same collection (dgOfferStatus.Items) twice, once with the For Each loop, and once manually using the i iterator. Then you modify items in your collection with item = i.Current. I believe it's this assignment that causes the exception.

(I also don't understand why you would do this. This assignment seems to be completeley superfluous, since i.Current and item should be identical since both iterators are at the same position in the collection.)

The exception basically tries to tell you that you may not modify a collection while you are iterating through it. But you seem to be doing exactly that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜