Share via


Stream.BeginRead メソッド

非同期の読み込み動作を開始します。

Public Overridable Function BeginRead( _
   ByVal buffer() As Byte, _   ByVal offset As Integer, _   ByVal count As Integer, _   ByVal callback As AsyncCallback, _   ByVal state As Object _) As IAsyncResult
[C#]
public virtual IAsyncResult BeginRead(byte[] buffer,intoffset,intcount,AsyncCallbackcallback,objectstate);
[C++]
public: virtual IAsyncResult* BeginRead(unsigned charbuffer __gc[],intoffset,intcount,AsyncCallback* callback,Object* state);
[JScript]
public function BeginRead(
   buffer : Byte[],offset : int,count : int,callback : AsyncCallback,state : Object) : IAsyncResult;

パラメータ

  • buffer
    データを読み込むバッファ。
  • offset
    ストリームから読み込んだデータの書き込み開始位置を示す buffer 内のバイト オフセット。
  • count
    読み取る最大バイト数。
  • callback
    読み取り完了時に呼び出されるオプションの非同期コールバック。
  • state
    この特定の非同期読み取り要求を他の要求と区別するために使用するユーザー指定のオブジェクト。

戻り値

非同期の読み込みを表す IAsyncResult 。まだ保留状態の場合もあります。

例外

例外の種類 条件
IOException ストリームの末尾を越えて非同期の読み込みを実行しようとしました。または、ディスク エラーが発生しました。
ArgumentException 1 つ以上の引数が無効です。
ObjectDisposedException ストリームが閉じられた後でメソッドが呼び出されました。
NotSupportedException 現在の Stream 実装は、読み取り操作をサポートしていません。

解説

ファイルの作成およびテキストのファイルへの書き込みの例については、「 ファイルへのテキストの書き込み 」を参照してください。ファイルからのテキストの読み取りの例については、「 ファイルからのテキストの読み取り 」を参照してください。バイナリ ファイルの読み取りおよび書き込みの例については、「 新しく作成したデータ ファイルの読み取りと書き込み 」を参照してください。非同期ファイル I/O の例については、「 非同期ファイル I/O 」を参照してください。

ストリームに対する BeginRead の既定の実装は、 Read メソッドを同期的に呼び出します。このため、 Read が一部のストリームをブロックする場合があります。一方、 FileStreamNetworkStream などのクラスのインスタンスは、インスタンスが非同期的に開かれていれば、非同期操作を完全にサポートします。このため、 BeginRead を呼び出しても、これらのストリームはブロックされません。 BeginRead をオーバーライドすると (たとえば、非同期デリゲートを使用するなどして)、非同期動作を提供できます。

読み込んだバイト数を確認し、読み込みに使用したオペレーティング システムのリソースを解放するには、戻り値の IAsyncResult をストリームの EndRead メソッドに渡します。この操作は、 BeginRead を呼び出したものと同じコードを使用するか、 BeginRead に渡されたコールバックで実行できます。

ストリームの現在位置は、非同期の読み込みまたは書き込みが発行されたときに更新されます。I/O 操作の完了時ではありません。

複数の非同期要求を同時に実行した場合、要求の完了順序は不定です。

現在のインスタンスが読み取りをサポートしているかどうかを判断するには、 CanRead プロパティを使用します。

ストリームが閉じている場合、または無効な引数を渡した場合は、 BeginRead からすぐに例外がスローされます。I/O 要求中のディスク障害など、非同期読み取りの要求中に発生するエラーは、スレッドプールのスレッドで発生し、 EndRead を呼び出すときに例外をスローします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Stream クラス | Stream メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み | 非同期ファイル I/O