OpenAsync(CancellationToken cancellationToken)
このメソッドは、新しい、タスクベースの非同期バージョンのOracleConnection.Open
を返します。
宣言
// C# public override Task OpenAsync(CancellationToken cancellationToken);
パラメータ
-
cancellationToken
- 接続のタイムアウトが発生する前にタスクを取り消すためにアプリケーションによって使用可能な入力取消しトークン。
戻り値
オープンしている接続の期間全体にわたりコール元のスレッドをブロックすることがない、即座に非同期処理を表すTaskオブジェクト。
実装
DbConnection
例外
-
ObjectDisposedException
- オブジェクトはすでに処理されています。 -
InvalidOperationException
- 接続がすでにオープンしているか、または接続文字列がNULLまたは空です。
備考
-
OpenAsync
をコールした後、OracleConnection.State
は、返されたTask
が完了するまでConnecting
を返します。その後、接続が成功すると、State
がOpen
を返します。接続が失敗すると、State
がClosed
を返します。 -
正常に接続されずに接続タイムアウト時間が経過すると、返された
Task
が、例外で失敗としてマークされます。
例
using Oracle.ManagedDataAccess.Client; using System; using System.Threading; using System.Threading.Tasks; namespace AsyncApp { class AsyncDemo { static async Task Main() { string connectionString = "User Id=HR; Password=<PASSWORD>; Data Source=oracle;"; OracleConnection oc = new OracleConnection(connectionString); // Open a connection asynchronously Task task = oc.OpenAsync(CancellationToken.None); // Execute an operation while the connection is being opened asynchronously Console.WriteLine("Opening a connection asynchronously."); // wait for the connection to be opened await task; Console.WriteLine("Connection opened successfully"); oc.Close(); } } }