Of course, if a form won't release for some reason, you'll be caught in an infinite loop. Something like this works better...
FOR lnI = _SCREEN.FormCount TO 1 STEP -1
IF TYPE("_SCREEN.Forms(1).Name") = "C"
_SCREEN.Forms(1).Release
ENDIF
NEXT
IF _SCREEN.FormCount > 0
* Something went wrong, probably a circular object reference
* between forms or an open transaction or something.
ENDIF