誰も参照していないフォームは、何故 GC の対象にならないのか(その2)
間違いがあった。
ControlCollection.Remove( Control value ) が行っている事は、value が自身に存在すれば自身から削除し(自身に存在しなければスルー)、さらに value の親を「WindowsFormsParkingWindow」にするという事である。単にコレクションから削除しているだけではないのだ。
ではなく、トリックは ControlCollection.Add() の方だったようだ。
ソースはここ。
@IT 会議室「Control.ControlCollection.Add メソッドについて」
#編集
すみません。間違いではなく、ControlCollection.Add() の方にもトリックがあった、が正確です。Remove()の動きは上記の通りです。