Close and Dispose - which to call?

.net

Solution

I want to clarify this situation.

According to Microsoft guidelines, it's a good practice to provide `Close` method where suitable. Here is a citation from Framework design guidelines

Consider providing method `Close()`, in addition to the `Dispose()`, if close is standard terminology in the area. When doing so, it is important that you make the `Close` implementation identical to `Dispose` ...

In most of cases `Close` and `Dispose` methods are equivalent. The main difference between `Close` and `Dispose` in the case of `SqlConnectionObject` is:

An application can call `Close` more than one time. No exception is generated.

If you called `Dispose` method `SqlConnection` object state will be reset. If you try to call any method on disposed `SqlConnection` object, you will receive exception.

That said:

- If you use connection object one time, use `Dispose`. A `using` block will ensure this is called even in the event of an exception.

- If connection object must be reused, use `Close` method.

Problem

Having read the threads Is SqlCommand.Dispose enough? and Closing and Disposing a WCF Service I am wondering for classes such as SqlConnection or one of the several classes inheriting from the Stream class does it matter if I close Dispose rather than Close?

Original source

Related problems