FileStream.EndRead メソッド

保留中の非同期読み取りが完了するまで待機します。

Overrides Public Function EndRead( _
   ByVal asyncResult As IAsyncResult _) As Integer
[C#]
public override int EndRead(IAsyncResultasyncResult);
[C++]
public: int EndRead(IAsyncResult* asyncResult);
[JScript]
public override function EndRead(
   asyncResult : IAsyncResult) : int;

パラメータ

  • asyncResult
    待機する保留状態の非同期要求への参照。

戻り値

ストリームから読み込んだバイト数 (0 ~要求したバイト数の間の数値)。ストリームの末尾では 0 が返されるだけです。それ以外の場合は、少なくとも 1 バイトが読み込み可能になるまでブロックします。

例外

例外の種類 条件
ArgumentNullException asyncResult が null 参照 (Visual Basic では Nothing) です。
ArgumentException この IAsyncResult オブジェクトは、このクラスでの BeginRead を呼び出して作成されたオブジェクトではありません。
InvalidOperationException EndRead が複数回呼び出されました。

解説

このメソッドは、 EndRead をオーバーライドします。

EndRead は、 BeginRead からの各 IAsyncResult ごとに 1 回ずつ呼び出すことができます。 EndRead を呼び出すと、ストリームから読み込まれたバイト数が通知されます。 EndRead は、I/O 操作が完了するまでブロックします。

その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

ファイルをコピーする。 File.Copy

FileInfo.CopyTo

ファイルのサイズを取得する。 FileInfo.Length
ファイルの属性を取得する。 File.GetAttributes
ファイルの属性を設定する。 File.SetAttributes
ファイルが存在するかどうかを判別する。 File.Exists
バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み
ディレクトリを作成する。 Directory.CreateDirectory

Directory.CreateDirectory

使用例

[Visual Basic, C#, C++] 次のコード例は System.IO.FileStream.FileStream4 の例の一部です。

 
Private Shared Sub EndReadCallback(asyncResult As IAsyncResult)
     Dim tempState As State = _
         DirectCast(asyncResult.AsyncState, State)
     Dim readCount As Integer = _
         tempState.FStream.EndRead(asyncResult)

     Dim i As Integer = 0
     While(i < readCount)
         If(tempState.ReadArray(i) <> tempState.WriteArray(i))
             Console.WriteLine("Error writing data.")
             tempState.FStream.Close()
             Return
         End If
         i += 1
     End While

     Console.WriteLine("The data was written to {0} and " & _
         "verified.", tempState.FStream.Name)
     tempState.FStream.Close()

     ' Signal the main thread that the verification is finished.
     tempState.ManualEvent.Set()
 End Sub

[C#] 
static void EndReadCallback(IAsyncResult asyncResult)
{
    State tempState = (State)asyncResult.AsyncState;
    int readCount = tempState.FStream.EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState.ReadArray[i] != tempState.WriteArray[i++])
        {
            Console.WriteLine("Error writing data.");
            tempState.FStream.Close();
            return;
        }
    }
    Console.WriteLine("The data was written to {0} and verified.",
        tempState.FStream.Name);
    tempState.FStream.Close();

    // Signal the main thread that the verification is finished.
    tempState.ManualEvent.Set();
}

[C++] 
static void EndReadCallback(IAsyncResult* asyncResult)
{
    State* tempState = 
        dynamic_cast<State*>(asyncResult->AsyncState);
    int readCount = tempState->FStream->EndRead(asyncResult);

    int i = 0;
    while(i < readCount)
    {
        if(tempState->ReadArray[i] != tempState->WriteArray[i++])
        {
            Console::WriteLine(S"Error writing data.");
            tempState->FStream->Close();
            return;
        }
    }
    Console::WriteLine(S"The data was written to {0} "
        S"and verified.", tempState->FStream->Name);
    tempState->FStream->Close();

    // Signal the main thread that the verification is finished.
    tempState->ManualEvent->Set();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: 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

参照

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