Close and Dispose – which to call?

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.

Leave a Comment