Sind die Fenster immer schon erzeugt und nur nicht sichtbar? -> Erzeugung der Formulare erst wenn sie benötigt werden und freigabe wenn Sie nicht mehr benötigt werden, ansonsten belegen sie schon unnötigerweise
GDI-Ressourcen.
Langandauernde Aktionen sollten wenn möglich in Thread verlagert werden. Falls das zu aufwending ist sollte regelmäßig die Message-Schleife des Programms bedient werden. Am einfachsten durch ein Application.ProcessMessage. Man sollte aber dafür sorgen das der User dann nicht versehentlich einen Button drückt und dann eine "parallele" Verarbeitung startet.
Windows Vista - Eine neue Erfahrung in Fehlern.