Partager via


NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Méthode

Définition

Démarre une lecture asynchrone 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

Paramètres

buffer
Byte[]

Tableau de type Byte qui correspond à l'emplacement dans la mémoire pour stocker des données lues à partir de NetworkStream.

offset
Int32

Emplacement de buffer auquel commencer le stockage des données.

sizecount
Int32

Nombre d'octets à lire à partir de NetworkStream.

callback
AsyncCallback

Délégué AsyncCallback exécuté lorsque BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) se termine.

state
Object

Objet contenant toutes les données supplémentaires définies par l'utilisateur.

Retours

IAsyncResult qui représente l'appel asynchrone.

Exceptions

Le paramètre buffer a la valeur null.

Le paramètre offset est inférieur à 0.

- ou -

Le paramètre offset est supérieure à la longueur du paramètre buffer.

- ou -

size est inférieur à 0.

- ou -

size est supérieur à la longueur de buffer moins la valeur du paramètre offset.

Le Socket sous-jacent est fermé.

- ou -

Une erreur s'est produite pendant la lecture à partir du réseau.

- ou -

Une erreur s’est produite pendant l’accès au socket.

Remarques

Important

Il s’agit d’une API de compatibilité. Nous vous déconseillons d’utiliser les méthodes APM (Begin/End) pour le nouveau développement. Utilisez plutôt les équivalents basés sur les tâches.

Vous pouvez passer un rappel qui implémente AsyncCallback sur BeginRead afin d’être informé de la fin de l’opération. Notez que si la pile réseau sous-jacente termine l’opération de manière synchrone, le rappel est exécuté inline, pendant l’appel à BeginRead. Dans ce cas, la CompletedSynchronously propriété sur le retourné IAsyncResult est définie true sur pour indiquer que la méthode s’est terminée de manière synchrone. Utilisez la AsyncState propriété de pour IAsyncResult obtenir l’objet d’état passé à la BeginRead méthode .

L’opération BeginRead doit être terminée en appelant la EndRead méthode . En règle générale, la méthode est appelée par le délégué fourni AsyncCallback . EndRead bloque le thread appelant jusqu’à ce que l’opération soit terminée.

L’opération lit autant de données que possible, jusqu’au nombre d’octets spécifié par le size paramètre .

Notes

Si vous recevez un IOException, case activée la InnerException propriété pour déterminer si elle a été provoquée par un SocketException. Si c’est le cas, utilisez la ErrorCode propriété pour obtenir le code d’erreur spécifique.

Les opérations de lecture et d’écriture peuvent être effectuées simultanément sur un instance de la NetworkStream classe sans avoir besoin de synchronisation. Tant qu’il existe un thread unique pour les opérations d’écriture et un thread unique pour les opérations de lecture, il n’y aura pas d’interférence croisée entre les threads de lecture et d’écriture et aucune synchronisation n’est requise.

S’applique à

Voir aussi