DbConnection.CloseAsync Method


Asynchronously closes the connection to the database.

 virtual System::Threading::Tasks::Task ^ CloseAsync();
public virtual System.Threading.Tasks.Task CloseAsync ();
abstract member CloseAsync : unit -> System.Threading.Tasks.Task
override this.CloseAsync : unit -> System.Threading.Tasks.Task
Public Overridable Function CloseAsync () As Task


A Task representing the asynchronous operation.


The default implementation of this asynchronous method delegates to its synchronous counterpart and returns a completed Task, potentially blocking the calling thread.

Data providers that support asynchronous programming should override the default implementation using asynchronous I/O operations.

The Close and CloseAsync methods roll back any pending transactions. They then release the connection to the connection pool, or close the connection if connection pooling is disabled.

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

If the DbConnection goes out of scope, it is not closed. Therefore, you must explicitly close the connection by calling Close or Dispose, which are functionally equivalent. If the connection pooling value Pooling is set to true or yes, this also releases the physical connection.


Do not close or dispose a DbConnection, a DbDataReader, or any other managed object in the Finalize method of your class. In a finalizer, you should only release unmanaged resources that your class owns directly. If your class does not own any unmanaged resources, do not include a Finalize method in your class definition. For more information, see Garbage Collection.

This method stores in the task it returns all non-usage exceptions that the method's synchronous counterpart can throw. If an exception is stored into the returned task, that exception will be thrown when the task is awaited. Usage exceptions, such as ArgumentException, are still thrown synchronously. For the stored exceptions, see the exceptions thrown by Close().

Applies to