PROTECTED FUNCTION CollectGarbage() *---------------------------------- LOCAL ARRAY laMembers(1) LOCAL loObj, lcObj This.CollectingGarbage = .T. =AMEMBERS( laMembers, THIS ) FOR i = 1 TO ALEN( laMembers ) IF Type( 'Eval("This." + lamembers(i) )' ) == "O" lcObj = "This." + lamembers(i) *-- If it's a recordset Close it before nulling it IF Type( 'Eval("This." + lamembers(i) + "Status" )') == 'N' AND Eval("This." + lamembers(i) + "Status" ) = adStateOpen &lcObj..Close ENDIF &lcObj = NULL ENDIF ENDFOR IF Application.StartMode = 5 OR Application.StartMode = 3 Close Tables All CLEAR DLLS ENDIF This.CollectingGarbage = .F. ENDFUNC PROTECTED FUNCTION Destroy() IF !THIS.lGarbageCollected THIS.CollectGarbage() ENDIF ENDFUNC