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