473,796 Members | 2,482 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Can't override Dispose)( ?

When I write this code

namespace WindowsApplicat ion1
{
public class Form1 : System.Windows. Forms.Form
{
(...)
/// <summary>
/// Clean up any resources being used.
/// </summary>
public override void Dispose() <-------
{}
(...)
}

I obtain :

C:\Temp\CSharp\ WindowsApplicat ion1\Form1.cs(3 2):
'WindowsApplica tion1.Form1.Dis pose()' : cannot override inherited member
'System.Compone ntModel.Compone nt.Dispose()' because it is not marked
virtual, abstract, or override

And It's written in msdn :
Component
[C#]
public virtual void Dispose();

What's wrong ?

Gawel

Nov 15 '05 #1
8 18385
mistrzu a nie powinno byæ

protected override void Dispose( bool disposing )
{
....
}
pozdrawiam

Przemek Sulikowski
Nov 15 '05 #2
Gawelek,

You should be looking to override this method:

private virtual void Dispose(bool disposing)

The public Dispose method just calls this method with the disposing flag
set to true. The finalizer calls the above method with the disposing
parameter set to false. The disposing flag basically tells you whether or
not to call the Dispose method on any managed components that your instance
is holding that implement IDispose.

Hope this helps.

--
- Nicholas Paldino [.NET/C# MVP]
- casper(1 spelled out){at)caspers (where I live, rhymes with
mouse)<dot]com

"Gawelek" <ga*****@NOSPAM EKpoczta.gazeta .pl> wrote in message
news:bl******** **@inews.gazeta .pl...
When I write this code

namespace WindowsApplicat ion1
{
public class Form1 : System.Windows. Forms.Form
{
(...)
/// <summary>
/// Clean up any resources being used.
/// </summary>
public override void Dispose() <-------
{}
(...)
}

I obtain :

C:\Temp\CSharp\ WindowsApplicat ion1\Form1.cs(3 2):
'WindowsApplica tion1.Form1.Dis pose()' : cannot override inherited member
'System.Compone ntModel.Compone nt.Dispose()' because it is not marked
virtual, abstract, or override

And It's written in msdn :
Component
[C#]
public virtual void Dispose();

What's wrong ?

Gawel

Nov 15 '05 #3
> Gawelek,

You should be looking to override this method:
Why ?
private virtual void Dispose(bool disposing)

The public Dispose method just calls this method with the disposing flag set to true. The finalizer calls the above method with the disposing
parameter set to false. The disposing flag basically tells you whether or
not to call the Dispose method on any managed components that your instance is holding that implement IDispose.


Dispose() is marked virtual. Why can't I override it ?

Gawel
Nov 15 '05 #4
> > You should be looking to override this method:

Why ?
can you tell us what you exactly want to do?
Dispose() is marked virtual. Why can't I override it ?

'cause it isn't virtual
Nov 15 '05 #5
Gawelek <ga*****@NOSPAM EKpoczta.gazeta .pl> wrote:
Dispose() is marked virtual. Why can't I override it ?


It's a bug in the documentation. Component.Dispo se isn't actually
virtual - look at the Component class's IL and you'll see that. There
seem to be a number of methods which are documented as being virtual
but which aren't, in fact, virtual.

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 15 '05 #6
You can implement IDisposable and make yer own , right?

"Jon Skeet" <sk***@pobox.co m> wrote in message
news:MP******** *************** *@msnews.micros oft.com...
Gawelek <ga*****@NOSPAM EKpoczta.gazeta .pl> wrote:
Dispose() is marked virtual. Why can't I override it ?


It's a bug in the documentation. Component.Dispo se isn't actually
virtual - look at the Component class's IL and you'll see that. There
seem to be a number of methods which are documented as being virtual
but which aren't, in fact, virtual.

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too

Nov 15 '05 #7
Mr.Tickle <Mr******@mrmen .com> wrote:
You can implement IDisposable and make yer own , right?


Component already implements IDisposable though. The OP should be
overriding Dispose(bool) rather than just Dispose().

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 15 '05 #8
IDispose::Dispo se is already implemented by the Component class. Since it is
not marked virtual (since it implements the interface), you can't override
it. This must be by design, forcing you to use the form dispose method
instead.

"Gawelek" <ga*****@NOSPAM EKpoczta.gazeta .pl> wrote in message
news:bl******** **@inews.gazeta .pl...
When I write this code

namespace WindowsApplicat ion1
{
public class Form1 : System.Windows. Forms.Form
{
(...)
/// <summary>
/// Clean up any resources being used.
/// </summary>
public override void Dispose() <-------
{}
(...)
}

I obtain :

C:\Temp\CSharp\ WindowsApplicat ion1\Form1.cs(3 2):
'WindowsApplica tion1.Form1.Dis pose()' : cannot override inherited member
'System.Compone ntModel.Compone nt.Dispose()' because it is not marked
virtual, abstract, or override

And It's written in msdn :
Component
[C#]
public virtual void Dispose();

What's wrong ?

Gawel

Nov 15 '05 #9

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

Similar topics

3
6077
by: faktujaa | last post by:
Hi All, A small confusion. I have defined a connection class that has System.Data.IDbConnection as a member variable and implements IDisposable interface. I have implemented Dispose method to call Dispose method of IDbConnection. This Dispose method is called from a destructor. In the dispose method, i also call GC.SuppressFinalize(this) so as to avoid finalizer. All this was OK untill i came across one article that says - not to call...
10
18548
by: Henrik Dahl | last post by:
Hello! After I've finished using an instance of the SqlCommand class, should I then invoke Dispose() on the instance. I suppose so, as there is a Dispose method, but what does it actually release? I would basically prefer to skip invoking Dispose() as this will free me from determining when the usage actually has finished.
14
6733
by: wobbles | last post by:
Hi Everyone, I've read most of the posts regarding "Dispose" in this NG. I still have some questions. If I declare and use a disposable object (say a DB connection) within a method, is it worth calling Dispose() within my "finally" block, even if that object only has local scope? When the thread exits this method, won't the GC collect my disposable
2
310
by: Bonnie | last post by:
In MSDN example for IDisposable, it has the followin ---------------------------------------------------------------------------- // Implement IDisposable // Do not make this method virtual // A derived class should not be able to override this method public void Dispose( Dispose(true) // This object will be cleaned up by the Dispose method // Therefore, you should call GC.SupressFinalize t
156
5908
by: Dennis | last post by:
Ok, I'm trying to dispose of every object that I create that has a dispose method based on advice from this newsgroup. However, I'm not sure how to dispose of the following object that was created inside a method call. dim myvar as new object1 object1.dosomethingmethod(new object2) Note that object 2 has a dispose method but how do I dispose of it unless I do the following:
13
1541
by: Grafix | last post by:
All - As we all know, Dispose method is reserved in C++ 8 and the expected syntax is to use ~MyClass(). In 1.1, we used to have following structure for Dispose class MyClass : IDisposable { public void Dispose() { Dispose(true); GC.Supressxxx(this); } ~Dispose() { Dispose(false); } // Finalizer
6
3587
by: Water Cooler v2 | last post by:
I heard from someone that we must not implement IDisposable for all classes. Can someone please tell me: 1. the reason why we must not implement IDisposable for all the classes we write. 2. what is the correct way of implementing IDisposable.Dispose? 3. what is the preferred way, if there is one over the other, of calling the Dispose method on an object that implements IDisposable. Is it the way that uses the "using(object){}" construct...
3
4381
by: AlexS | last post by:
When I implement Dispose pattern in object implementing IDisposable, current fxcop recommends: Ensure that Wrapper.Dispose():Void is declared as public and sealed. However, if I do as it asks, compiler complains that sealed can't be used because method is not overrideable. I believe sealed isn't applicable here at all. And this rule shouldn't be public virtual in this case.
6
23370
by: =?Utf-8?B?VmljdG9y?= | last post by:
Hi, I have a UserControl (C# WinFroms application) that requires some cleaning code to run when a form with control is closed. Where I can put that code? There is no ControlClosing or ControlClosed event. I can put my code into UserControl.Desgner.cs Dispose method, but that seems to be a bad practive. What do I do?
0
9673
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
10452
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10221
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...
0
10003
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...
1
7546
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5569
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
4115
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
2
3730
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2924
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.