NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Comienza una lectura asincrónica de NetworkStream.
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public override IAsyncResult BeginRead (byte[] buffer, int offset, int size, AsyncCallback callback, object state);
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginRead : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Parámetros
- buffer
- Byte[]
Matriz de tipo Byte que corresponde a la ubicación de la memoria donde se almacenan los datos leídos de NetworkStream.
- offset
- Int32
Ubicación de buffer
donde se inicia el almacenamiento de los datos.
- sizecount
- Int32
Número de bytes que se va a leer de NetworkStream.
- callback
- AsyncCallback
Delegado de AsyncCallback que se ejecuta al finalizar BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).
- state
- Object
Objeto que contiene los datos adicionales definidos por el usuario.
Devoluciones
Elemento IAsyncResult que representa la llamada asincrónica.
Excepciones
El parámetro buffer
es null
.
El parámetro offset
es menor que 0.
o bien
El parámetro offset
es mayor que la longitud del parámetro buffer
.
o bien
size
es menor que 0.
o bien
size
es mayor que la longitud de buffer
menos el valor del parámetro offset
.
El elemento Socket subyacente está cerrado.
o bien
Se produce un error al leer de la red.
o bien
Se produjo un error al acceder al socket.
La clase NetworkStream está cerrada.
Comentarios
Importante
Esta es una API de compatibilidad, no se recomienda usar los métodos de APM (Begin/End) para el nuevo desarrollo. En su lugar, use los equivalentes basados en tareas.
Puede pasar una devolución de llamada que se implemente AsyncCallbackBeginRead en para recibir una notificación sobre la finalización de la operación. Tenga en cuenta que si la pila de red subyacente completa la operación de forma sincrónica, la devolución de llamada se ejecutará en línea durante la llamada a BeginRead. En este caso, la CompletedSynchronously propiedad del devuelto IAsyncResult se establecerá en true
para indicar que el método se completó de forma sincrónica. Utilice la AsyncState propiedad de para obtener el objeto de IAsyncResult estado pasado al BeginRead método .
La BeginRead operación debe completarse llamando al EndRead método . Normalmente, el delegado proporcionado AsyncCallback invoca el método . EndRead bloqueará el subproceso que realiza la llamada hasta que se complete la operación.
La operación lee tantos datos como estén disponibles, hasta el número de bytes especificados por el size
parámetro .
Nota
Si recibe un IOException, compruebe la InnerException propiedad para determinar si fue causada por un SocketException. Si es así, use la ErrorCode propiedad para obtener el código de error específico.
Las operaciones de lectura y escritura se pueden realizar simultáneamente en una instancia de la NetworkStream clase sin necesidad de sincronización. Siempre que haya un subproceso único para las operaciones de escritura y un subproceso único para las operaciones de lectura, no habrá interferencias cruzadas entre subprocesos de lectura y escritura y no se requiere sincronización.