> 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 >