WriteAsync(byte[], int, int, CancellationToken)

WriteAsyncメソッドは、タスクベースの非同期バージョンのOracleBlob.Write()を返します。

宣言

// C#
public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);

パラメータ

  • buffer

    データを提供するバイト配列buffer。

  • offset

    bufferの読取りを開始する位置となる、0を基準としたオフセット(バイト数)

  • count

    OracleBlobに書き込まれるデータ量(バイト)

  • cancellationToken

    タスクを取り消すためにアプリケーションによって使用可能な入力取消しトークン。

戻り値

問合せ実行の期間全体にわたりコール元のスレッドをブロックすることがない、即座に非同期処理を表すTaskオブジェクト。

例外

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

  • InvalidOperationException - OracleConnectionがオープンされていないか、またはオブジェクトの存続中にクローズされています。
  • ArgumentOutOfRangeException - この例外は次のいずれかの条件が存在する場合に表示されます。

    • offsetまたはcountパラメータが0未満の場合。

    • offsetがbuffer.Length以上の場合。

    • offsetとcountの合計がbuffer.Lengthより大きい場合。

using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace AsyncApp
{
  class AsyncDemo
  {
    static async Task Main(string[] args)
    {
      string connectionString = "User Id=HR; Password=<PASSWORD>; Data Source=oracle;";

      OracleConnection oc = new OracleConnection(connectionString);
      await oc.OpenAsync(CancellationToken.None);

      OracleBlob blob = new OracleBlob(oc);

      byte[] writeBuffer = new byte[4] { 1, 2, 3, 4 };

      //Write data to Binary Large Object, asynchronously
      Task task = blob.WriteAsync(writeBuffer, 0, 4, CancellationToken.None);

      //other operations
      Console.WriteLine("Hello World");

      //await for asynchronous WriteAsync
      await task;
      Console.WriteLine("blob.Length  = " + blob.Length);
    }
  }
}