System.IO.FileStream.EndRead 方法

方法描述

等待挂起的异步读取完成。

语法定义(C# System.IO.FileStream.EndRead 方法 的用法)

public override int EndRead(
	IAsyncResult asyncResult
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
asyncResult System-IAsyncResult 对所等待的挂起异步请求的引用。
返回值 System.Int32 从流中读取的字节数,介于 0 和所请求的字节数之间。 流仅在流的末尾返回 0;否则应一直阻塞到至少有 1 个字节可用为止。

提示和注释

每次调用 BeginRead 时都必须调用 EndRead。 无法结束一个读取进程就开始另一个读取可能导致死锁等不希望出现的行为。

此方法重写 EndRead。

可针对 BeginRead 的每个 IAsyncResult 调用 EndRead。 调用 EndRead 将指出已从流中读取的字节数。 EndRead 将一直被阻止到 I/O 操作完成时。

System.IO.FileStream.EndRead 方法例子

此代码示例是为 FileStream(String, FileMode, FileAccess, FileShare, Int32, Boolean) 构造函数提供的一个更大示例的一部分。

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

异常

异常 异常描述
ArgumentNullException asyncResult 为 null。
ArgumentException 此 IAsyncResult 对象不是通过对该类调用 BeginRead 来创建的。
InvalidOperationException EndRead 被多次调用。
IOException 此流关闭或发生内部错误。

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。