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