NetworkStream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.
Le NetworkStream est fermé.
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.