0

我的 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 循环会抛出“集合已修改;枚举操作可能无法执行”异常。因为在每个子窗体 Close() 调用中,f.MdiChidren 集合都会被修改,这让我很惊讶。谁能告诉我为什么它没有抛出那个异常?

但是,它会在客户端系统中抛出“集合已修改;枚举操作可能无法执行”。

4

1 回答 1

0

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

这是一个帖子,其中有一个答案,很好地解释了我正在谈论的问题。

VS2008 调试器不会因未处理的异常而中断

我应该提一下,我在 2010 年仍然看到它。

于 2011-11-01T10:11:08.273 回答