PRB: RELEASE Command Does Not Release a Form

Last reviewed: April 30, 1996
Article ID: Q127848
The information in this article applies to:
  • Microsoft Visual FoxPro for Windows, version 3.0

SYMPTOMS

Issuing the RELEASE command to release an instance variable does not release the object referenced by the variable. If the variable holds a reference to a form that is displayed, the form is not closed.

CAUSE

Another reference to the object exists. An object is released from memory when all of the references to this object have been released.

RESOLUTION

You can use the AINSTANCE() function to verify that all the references to an object have been released. AINSTANCE() builds an array of object references.

A reference to the specified object still exists if the length of the array is greater than 0. Another alternative is to maintain a table or an array that updates the reference count to an object.

STATUS

This behavior is by design.

MORE INFORMATION

Steps to Reproduce Behavior

Following are two examples that create a reference to a form.

Example One

  1. Create a form, and save it as TEST.

  2. From the Command window, type:

    DO FORM TEST NAME ofrmTest1 LINKED &&Displays a form

       ofrmTest2=ofrmTest1       &&Creates a reference to ofrmTest1
       * The following command releases the variable ofrmTest1. However, the
       * form is not released because a reference exists.
       RELEASE ofrmtest1
       RELEASE ofrmtest2  && Releases the Form
    
    

Example Two

  1. Copy and paste the following sample code into a PRG

    OFORM1=CREATE('testclass')

       OFORM2=OFORM1   &&Creates a reference to OFORM1
       OFORM2.SHOW     && Displays the Form
    
       nobject= AINSTANCE(atest1,'testclass')
       DISPLAY MEMORY LIKE atest1 && Two references to the object exist
    
       RELEASE OFORM2          && Form not released
       WAIT WINDOW "After OFORM2 has been released"
    
       RELEASE oForm1          && Form is released.
       WAIT WINDOW "After OFORM1 has been released"
    
       DEFINE CLASS TESTCLASS AS FORM
          Caption="Hello"
       ENDDEFINE
    
    

  2. Execute the PRG.


Additional reference words: 3.00 VFoxWin close
KBCategory: kbprg kbprb
KBSubcategory: FxprgClassoop


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: April 30, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.