hast du vorher SetThreadDesktop und SwitchDesktop verwendet?
Close macht dies nicht
Kommt bei .Close eine
Exception?
Ein .Free ruft nur dann .Close auf, wenn CloseOnDestroy true ist.
Außerdem kann der Desktop nicht geschlossen werden, wenn noch Fenster darauf sind oder der Desktop gehört schon vorher zum Prozess.
Siehe auch
http://msdn2.microsoft.com/en-us/library/ms682024.aspx