为什么它不抛出“集合被修改;枚举操作可能无法执行”异常

时间:2011-11-01 07:54:53

标签: vb.net for-loop mdi openform

我的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

它在我的测试环境中运行得很完美,即使我预期 For Each loop 会抛出“ 集合被修改;枚举操作可能不会执行“ 例外。因为在每个子窗体上调用Close()调用,f.MdiChidren集合得到修改,这让我感到很惊讶。谁能告诉我为什么它没有抛出那个例外?

但是它会在客户端系统中抛出“Collection was modified;枚举操作可能无法执行”。

1 个答案:

答案 0 :(得分:0)

如果您运行的是64位操作系统,则可能与此相关。我在过去遇到过这个问题,我们发现的工作是将项目目标设置为x86(如果可能的话)。

这是一篇帖子,其答案对我所谈论的问题有很好的解释。

VS2008 Debugger does not break on unhandled exception

我应该提到我在2010年仍然可以看到它。