почему не выдается исключение «Коллекция была изменена; операция перечисления может не выполняться» - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть опция меню выхода из системы в моем приложении MDI.При выходе я хочу закрыть все открытые формы.в настоящее время я использую следующий фрагмент кода для достижения этой цели:

For Each f As Form In My.Application.OpenForms
    If f.Name = Me.Name Then
        For Each child As Form In f.MdiChildren
            child.Close()
        Next
    Else
        f.Close()
    End If
Next

Он отлично работает в моей тестовой среде, хотя я ожидал, что Для каждого цикла будет выбрасывать« Коллекция была изменена; операция перечисления может не выполняться» исключение.так как в каждой дочерней форме вызывается метод Close (), коллекция f.MdiChidren модифицируется, что меня очень удивило.Кто-нибудь может сказать мне, почему он не выдает это исключение?

Однако он выдает «Коллекция была изменена; операция перечисления может не выполняться» в клиентской системе.

1 Ответ

0 голосов
/ 01 ноября 2011

Если вы используете 64-битную ОС, это может быть связано с этим. У меня были проблемы с этим в прошлом, мы нашли способ обойти цель проекта x86 (когда это возможно).

Вот пост, в котором есть ответ, в котором есть хорошее объяснение проблемы, о которой я говорю.

VS2008 Отладчик не прерывается при необработанном исключении

Я должен отметить, что я все еще видел это в 2010 году.

...