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 コレクションが変更されるので、とても驚きました。その例外がスローされない理由を誰か教えてもらえますか?
ただし、クライアント システムで「コレクションが変更されました。列挙操作が実行されない可能性があります」がスローされます。