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

The WriteAsync method returns a Task-based asynchronous version of OracleBlob.Write().

Declaration

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

Parameters

  • buffer

    The byte array buffer that provides the data.

  • offset

    The 0-based offset (in bytes) from which the buffer is read.

  • count

    The amount of data (in bytes) that is to be written into the OracleBlob.

  • cancellationToken

    The input cancellation token which can be used by the application to cancel the task.

Return Value

Task object representing the asynchronous operation immediately without blocking the calling thread for the whole duration of the query execution.

Exceptions

  • ObjectDisposedException - The object is already disposed.

  • InvalidOperationException - The OracleConnection is not open or has been closed during the lifetime of the object
  • ArgumentOutOfRangeException - This exception is thrown if any of the following conditions exist:

    • The offset or the count parameter is less than 0.

    • The offset is greater than or equal to the buffer.Length.

    • The offset and the count together are greater than the buffer.Length.

Example

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);
    }
  }
}