473,799 Members | 3,390 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Discover not disposed objects

Is there a way to catch undisposed objects that only occupy memory, in order
to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))

--
Cheers,
Crirus

------------------------------
If work were a good thing, the boss would take it all from you

------------------------------
Nov 20 '05 #1
7 2091
* "Crirus" <Cr****@datagro up.ro> scripsit:
Is there a way to catch undisposed objects that only occupy memory, in order
to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))


I don't know if there is a tool to "automate" that, but keep the code
compact, structure it in procedures -- so you won't "forget" to
dispose...

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>
Nov 20 '05 #2
Crirus,
When we get Whidbey (VB.NET 2004 later in 2004) we will have a Using
statement that will call Dispose automatically for us!

Until then:
Is there a way to catch undisposed objects that only occupy memory, in order to call dispose for them? With out a reference to the said object, you will not be able to call the
Dispose method. Normally classes that implement Dispose also implement the
Finalize method. The Dispose method will disable calling Finalize, while the
Finalize method will call the Dispose method...

http://msdn.microsoft.com/library/de...izeDispose.asp

If a class implements the Finalize method, then the GC will eventually call
the Finalize method. Hence the GC should eventually call the Dispose
method...

You can use the CLR profiler to help identify objects that need to be
finalize, this may lead you to the objects that need to be Disposed of.

http://www.microsoft.com/downloads/d...displaylang=en

I believe you could use one of the many Code Critics/Code Analyzers out
there to identify objects that have not been disposed:

Such as:
http://www.fmsinc.com/dotnet/analyzer/

At least I would expect a Code Critic/Analyzer to report objects that were
not disposed!

Hope this helps
Jay
"Crirus" <Cr****@datagro up.ro> wrote in message
news:OF******** ******@TK2MSFTN GP12.phx.gbl... Is there a way to catch undisposed objects that only occupy memory, in order to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))

--
Cheers,
Crirus

------------------------------
If work were a good thing, the boss would take it all from you

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

Nov 20 '05 #3
In article <OF************ **@TK2MSFTNGP12 .phx.gbl>, Crirus wrote:
Is there a way to catch undisposed objects that only occupy memory, in order
to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))


There is no way, once you've released all references...

For custom classes, though it was decided over on the C# group that the
best solution is to throw an exception from your finalize method. Sure,
it brings your program down - but you know when you forgot to dispose of
an object :)

--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #4
Tom,
Throwing an exception in your Finalize method is a good idea!

As long as you implement the Disposable Finalize pattern correctly ;-)

http://msdn.microsoft.com/library/de...izeDispose.asp

Just a thought
Jay

"Tom Shelton" <to*@mtogden.co m> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
In article <OF************ **@TK2MSFTNGP12 .phx.gbl>, Crirus wrote:
Is there a way to catch undisposed objects that only occupy memory, in order to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))


There is no way, once you've released all references...

For custom classes, though it was decided over on the C# group that the
best solution is to throw an exception from your finalize method. Sure,
it brings your program down - but you know when you forgot to dispose of
an object :)

--
Tom Shelton
MVP [Visual Basic]

Nov 20 '05 #5
In article <OY************ **@TK2MSFTNGP12 .phx.gbl>, Jay B. Harlow [MVP - Outlook] wrote:
Tom,
Throwing an exception in your Finalize method is a good idea!

As long as you implement the Disposable Finalize pattern correctly ;-)

http://msdn.microsoft.com/library/de...izeDispose.asp

Just a thought
Jay


Yeah, I of course should have mentioned that - but I guess I assumed
that was understood :)

Actually, I thought it was pretty clever myself and am starting to use
that it in my own objects. This way you always know when Finalize has
been called :)

--
Tom Shelton
MVP [Visual Basic]
Nov 20 '05 #6
Wel, my concerns are related to pens, graphics, brushes..etc... the graphics
stuffs..that ones I use most.. my own classes are not to me dispasable as
long as application run

--
Cheers,
Crirus

------------------------------
If work were a good thing, the boss would take it all from you

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

"Tom Shelton" <to*@mtogden.co m> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
In article <OF************ **@TK2MSFTNGP12 .phx.gbl>, Crirus wrote:
Is there a way to catch undisposed objects that only occupy memory, in order to call dispose for them?
I may be forgetting to dispose fonts, pens, graphics sometimes... how to
find them (without reading the whole code again:))


There is no way, once you've released all references...

For custom classes, though it was decided over on the C# group that the
best solution is to throw an exception from your finalize method. Sure,
it brings your program down - but you know when you forgot to dispose of
an object :)

--
Tom Shelton
MVP [Visual Basic]

Nov 20 '05 #7
Tom,
An alternative to throwing an exception is to use Debug.Fail.

I will use Debug.Fail when I want the message in the debugger, however I do
not want the message in the release build.

As technically not calling Dispose is not an error.

Just a thought
Jay

"Tom Shelton" <to*@mtogden.co m> wrote in message
news:%2******** ********@tk2msf tngp13.phx.gbl. ..
In article <OY************ **@TK2MSFTNGP12 .phx.gbl>, Jay B. Harlow [MVP -

Outlook] wrote:
Tom,
Throwing an exception in your Finalize method is a good idea!

As long as you implement the Disposable Finalize pattern correctly ;-)

http://msdn.microsoft.com/library/de...izeDispose.asp
Just a thought
Jay


Yeah, I of course should have mentioned that - but I guess I assumed
that was understood :)

Actually, I thought it was pretty clever myself and am starting to use
that it in my own objects. This way you always know when Finalize has
been called :)

--
Tom Shelton
MVP [Visual Basic]

Nov 20 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
1327
by: Einar Høst | last post by:
Well, subject says it all really... Thanks, Einar -- "If it was so, it might be; and if it were so, it would be; but as it isn't, it ain't. That's logic" -- Lewis Carroll
7
22747
by: Ryan Park | last post by:
Hi, //SITUATION I got a panel control that hold a certain position on a form. Every controls or UIs are on this panel. At certain situation, I called dispose() method of this panel control and change it with other panel which contains other business logic and UI controls.
9
7604
by: David Sworder | last post by:
Hi, I have a form that displays data (is that vague enough for you?). The data comes in on a thread-pool thread. Since the thread pool thread is not the same as the UI thread, the callback function of my form follows the standard design pattern: if(IsDisposed){ return; }
0
3789
by: Richard Blewett [DevelopMentor] | last post by:
In theory there is nothing wrong with the Windows Forms part of your application (using your code as a start I mocked up the app and can happily press the connect and disconnect buttons ad-infinitum). So can you put a try catch handler in the Disconnect_Click handler to trap the exception so you can, say, write the exception yttace out to a file. You need to know which obejct is generating the exception, whether it is one of your Windows Forms...
6
3807
by: Jim H | last post by:
I have a class object that creates and uses a System.Threading.Timer. In the destructor for my class I cancel the timer using timer.Change(infinite, infinite) then I call timer.Dispose() to clean it up. I get an exception about unable to access a disposed object when I call timer.Change. This is only happening on my notebook and not my desktop and only when running in the debugger. Machines are both WX Pro SP2. VS.NET 2003, .NET 1.1...
4
1375
by: wirawan | last post by:
hi all i had some problems and need your sugestion to solve it. why event of controls that i have been disposed still alive and trigger method had been bind to it. best regards wirawan --
6
8593
by: SamSpade | last post by:
Public Function PicCreateGraphics() As Graphics 'Client should dispose this PicCreateGraphics = Graphics.FromImage(mDocumentImage) mPicCreateGraphicsSaved = PicCreateGraphics 'Saved so I can later check to see if it is still valid End Function
3
1177
by: dast | last post by:
Hi, I'm using a delegate to edit some controls on formA from another thread on formB. This works nicely the first time I run formA. But if I close formA and reopen it I get errors. When changing the checked state of a radiobutton I get an error saying that I cannot access the control since it is disposed. But I can still change the
1
1162
by: Daniel | last post by:
is a reader automaticaly disposed if the connection it is associated with is closed? what will happen if an app: while true open connection open reader close connection end while
0
9687
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
10257
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
10237
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10029
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9077
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6808
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5467
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5588
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4144
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.