La causa mas comun de ese problema es que tienes una propiedad o variable que mantiene una referencia al formulario. Por ejemplo, si haces esto:
THISFORM.addProperty("me",THISFORM)
el formulario se cerrar sin problemas, pues VFP se encarga de liberar esas referencias automaticamente. Pero si haces esto:
THISFORM.addProperty("refs", CREATE("Custom"))
THISFORM.Refs.addProperty("form",THISFORM)
VFP no podra liberar la referencia al formulario almacenada en la propiedad "form" de "thisform.Refs", por lo que nunca se cerrara hasta que liberes la referencia almacenada en la propiedad "form":
THISFORM.Refs.Form = NULL
Tipicamente este codigo se coloca en el evento Release o Destroy, aunque yo prefiero crear un metodo particular que se encargue de cerrar el formulario y colocar alli el codigo de limpieza:
PROCEDURE closeForm
THISFORM.Refs.Form = NULL
THISFORM.Release()
ENDPROC
Saludos
Victor Espina