WriteAsync(byte[], int, int, CancellationToken)
WriteAsyncメソッドは、タスクベースの非同期バージョンのOracleBlob.Write()を返します。
宣言
// C# public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken);
パラメータ
-
bufferデータを提供するバイト配列buffer。
-
offsetbufferの読取りを開始する位置となる、0を基準としたオフセット(バイト数)
-
countOracleBlobに書き込まれるデータ量(バイト) -
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);
}
}
}