EndRead Method

Stream.EndRead Method (IAsyncResult)


Waits for the pending asynchronous read to complete. (Consider using ReadAsync instead; see the Remarks section.)

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)

public virtual int EndRead(
	IAsyncResult asyncResult


Type: System.IAsyncResult

The reference to the pending asynchronous request to finish.

Return Value

Type: System.Int32

The number of bytes read from the stream, between zero (0) and the number of bytes you requested. Streams return zero (0) only at the end of the stream, otherwise, they should block until at least one byte is available.

Exception Condition

asyncResult is null.


A handle to the pending read operation is not available.


The pending operation does not support reading.


asyncResult did not originate from a BeginRead method on the current stream.


The stream is closed or an internal error has occurred.

In the .NET Framework 4 and earlier versions, you have to use methods such as BeginRead and EndRead to implement asynchronous I/O operations. These methods are still available in the .NET Framework 4.5 to support legacy code; however, the new async methods, such as ReadAsync, WriteAsync, CopyToAsync, and FlushAsync, help you implement asynchronous I/O operations more easily.

Call EndRead to determine how many bytes were read from the stream.

EndRead can be called once on every IAsyncResult from BeginRead.

This method blocks until the I/O operation has completed.

.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Return to top
© 2015 Microsoft