La fermeture d'un formulaire à partir du gestionnaire de Chargement

J'ai un comportement étrange qui ne se produit que sur un seul formulaire.

Fondamentalement, je suis en création d'une instance de Form, et en appelant Show() pour afficher le formulaire de non-blocage. Dans ce formulaire Load gestionnaire d'événements, j'ai un peu de logique qui peuvent appeler this.Close() dans certaines circonstances. Il ferme la forme, mais la forme Show() méthode dans le code du client déclenche une ObjectDisposedException.

La trace de la pile de la ObjectDisposedException est comme suit:

au Système.De Windows.Les formulaires.De contrôle.CreateHandle()

au Système.De Windows.Les formulaires.Forme.CreateHandle()

au Système.De Windows.Les formulaires.De contrôle.get_Handle()

au Système.De Windows.Les formulaires.ContainerControl.FocusActiveControlInternal()

au Système.De Windows.Les formulaires.Forme.SetVisibleCore(valeur Booléenne)

au Système.De Windows.Les formulaires.De contrôle.Show()

...etc.

C'est ce que je suis en le voyant arriver:

  1. Control.Show() est appelé
  2. mon formulaire est lancé
  3. la OnFormLoad méthode est appelée
  4. la FormLoad gestionnaire d'événement est appelé, à l'intérieur de ce que j'appelle this.Close()
  5. la OnFormClosing méthode est appelée
  6. la FormClosing gestionnaire d'événement est appelé
  7. Dispose est appelé sur mon formulaire et de tous les contrôles de l'utilisateur

et puis, quelque part vers la fin de la Control.Show() méthode, il tente d'obtenir une poignée à la forme, qui capote et déclenche une exception parce que l'objet est marqué éliminés.

Ma vraie question est, pourquoi ne puis-je faire exactement la même chose sur tous les autres que j'ai sans exceptions? Est-il un GC problème? J'ai essayé de mettre un GC.Collect() appel juste après la this.Close() et il ne fait aucune différence. Comme je l'ai dit, il arrive à 100% du temps sur ce formulaire, et jamais n'importe où d'autre, indépendamment de contrôle utilisateur enfant, la portée de la variable de formulaire, etc.

Des idées?