DbConnection.CloseAsync Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Asynchronously closes the connection to the database.
public:
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
Returns
A Task representing the asynchronous operation.
Remarks
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.
Caution
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().