Home All Groups Group Topic Archive Search About

Opening and Closing a form error : Cannot access a disposed object named "frmImage".

Author
8 Apr 2005 2:26 PM
D Witherspoon
I use the following code to open up a form.

-------------------------------------------------------

If fImage Is Nothing Then
        fImage = New frmImage
End If

fImage.Show()

-------------------------------------------------------

It works the first time, but when the form is closed and this piece of code runs again I want to check to see if it is nothing and then if it is nothing then create a new instance of the form and show it.  Otherwise just show the form.  Well when the form is closed by the user the form becmome "disposed" instead of nothing.  Is this the result of ..NET Garbage Collection, and that fImage would eventually become nothing?

On top of this, how can I check to see if the object is disposed?



This is the error when closing the form and running that code above again:

Run-time exception thrown : System.ObjectDisposedException - Cannot access a disposed object named "frmImage".

Author
8 Apr 2005 3:05 PM
Cor Ligthert
D. Witherspoon

Setting something to nothing does nothing to delete it.
It only deletes the reference it has to its object

When you want to know if you still can use a form than you can use the

Isdisposed.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformscontrolclassisdisposedtopic.asp

I hope this helps,

Cor
Author
8 Apr 2005 3:11 PM
Morten Wennevik
Hi D Witherspoon,

Yes, when an object like windowsform is closed it will be marked disposed 
until the garbage collector has released it completely, at which time it 
will be null.

You can check if Windows Form is disposed by checking its IsDisposed 
property

if(fImage == null || !fImage.IsDisposed)
    fImage = new frmImage();

--
Happy Coding!
Morten Wennevik [C# MVP]
Author
8 Apr 2005 5:37 PM
Herfried K. Wagner [MVP]
"D Witherspoon" <dwithersp***@noway.org> schrieb:
>>>If fImage Is Nothing Then
        fImage = New frmImage
End If

fImage.Show()

-------------------------------------------------------

It works the first time, but when the form is closed and this piece of code
runs again I want to check to see if it is nothing and then if it is nothing
then create a new instance of the form and show it.  Otherwise just show the
form.  Well when the form is closed by the user the form becmome "disposed"
instead of nothing.  Is this the result of .NET Garbage Collection, and that
fImage would eventually become nothing?

On top of this, how can I check to see if the object is disposed?



This is the error when closing the form and running that code above again:

Run-time exception thrown : System.ObjectDisposedException - Cannot access a
disposed object named "frmImage".<<<

See:

<URL:http://groups.google.de/groups?selm=eILSwL4CFHA.2072%40TK2MSFTNGP10.phx.gbl>

--
M S   Herfried K. Wagner
M V P  <URL:http://dotnet.mvps.org/>
V B   <URL:http://classicvb.org/petition/>