Share via

SqlConnection.OpenAsync(CancellationToken) Method


An asynchronous version of Open(), which opens a database connection with the property settings specified by the ConnectionString. The cancellation token can be used to request that the operation be abandoned before the connection timeout elapses. Exceptions will be propagated via the returned Task. If the connection timeout time elapses without successfully connecting, the returned Task will be marked as faulted with an Exception. The implementation returns a Task without blocking the calling thread for both pooled and non-pooled connections.

 override System::Threading::Tasks::Task ^ OpenAsync(System::Threading::CancellationToken cancellationToken);
public override System.Threading.Tasks.Task OpenAsync (System.Threading.CancellationToken cancellationToken);
override this.OpenAsync : System.Threading.CancellationToken -> System.Threading.Tasks.Task
Public Overrides Function OpenAsync (cancellationToken As CancellationToken) As Task



The cancellation instruction.


A task representing the asynchronous operation.


Calling OpenAsync(CancellationToken) more than once for the same instance before task completion.

Context Connection=true is specified in the connection string.

A connection was not available from the connection pool before the connection time out elapsed.

Any error returned by SQL Server that occurred while opening the connection.

The cancellation token was canceled. This exception is stored into the returned task.


After calling OpenAsync, State must return Connecting until the returned Task is completed. Then, if the connection was successful, State must return Open. If the connection fails, State must return Closed.

A call to Close will attempt to cancel or close the corresponding OpenAsync call.

For more information about asynchronous programming in the .NET Framework Data Provider for SQL Server, see Asynchronous Programming.

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 Open().

Applies to

See also