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