OpenAsync(CancellationToken cancellationToken)

このメソッドは、新しい、タスクベースの非同期バージョンのOracleConnection.Openを返します。

宣言

// C#
public override Task OpenAsync(CancellationToken cancellationToken);

パラメータ

  • cancellationToken - 接続のタイムアウトが発生する前にタスクを取り消すためにアプリケーションによって使用可能な入力取消しトークン。

戻り値

オープンしている接続の期間全体にわたりコール元のスレッドをブロックすることがない、即座に非同期処理を表すTaskオブジェクト。

実装

DbConnection

例外

  • ObjectDisposedException - オブジェクトはすでに処理されています。

  • InvalidOperationException - 接続がすでにオープンしているか、または接続文字列がNULLまたは空です。

備考

  • OpenAsyncをコールした後、OracleConnection.Stateは、返されたTaskが完了するまでConnectingを返します。その後、接続が成功すると、StateOpenを返します。接続が失敗すると、StateClosedを返します。

  • 正常に接続されずに接続タイムアウト時間が経過すると、返された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();
    }
  }
}