Falls du die Andeutung in seinem Quellcode nicht verstanden haben solltest:
zwischen der Bedingung und der tatsächlichen Ausführung des Invoke kann Zeit vergangen sein, wodurch sich der Zustand des Fensters schon verändert haben könnte.
Keine Sorge, seine Andeutung habe ich schon verstanden. Deshalb kam mir ja die Idee, die Vernichtung der Form so lange herauszuzögern, bis der Invoke ein letztes Mal aufgerufen wurde.
Um gute Ratschläge geben zu können, wären ein paar mehr Randbedingungen notwendig:
Was versuchst du damit umzusetzen? Muss es sich in einem separatem Thread befinden?
Bei dem Programm handelt es sich um eine Gravitationssimulation, deren Berechnungen in einem separaten Thread in einer While-Schleife ausgeführt werden. Allerdings gibt es auf der Hauptform ein paar Infoboxen, in denen Informationen zu den jeweiligen Körpern angezeigt werden sollen. Da die Schleife jedoch in einem anderen Thread als im GUI-Thread ausgeführt wird, kann die Aktualisierung der Elemente nur per Invoke stattfinden. Und das ist die Stelle, an der (beim Beenden des Programmes) das Problem auftritt.