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.
Commence une lecture asynchrone à partir du NetworkStream.
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public:
override IAsyncResult ^ BeginRead(cli::array <System::Byte> ^ buffer, int offset, int size, AsyncCallback ^ callback, System::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);
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, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Public Overrides Function BeginRead (buffer As Byte(), offset As Integer, size As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Paramètres
- buffer
- Byte[]
Tableau de type Byte qui est l’emplacement en mémoire pour stocker les données lues à partir du NetworkStream.
- offset
- Int32
Emplacement dans buffer lequel commencer le stockage des données.
- countsize
- Int32
Nombre d’octets à lire à partir du NetworkStream.
- callback
- AsyncCallback
Délégué AsyncCallback exécuté une fois BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) terminé.
- state
- Object
Objet qui contient des données supplémentaires définies par l’utilisateur.
Retours
Qui IAsyncResult représente l’appel asynchrone.
Exceptions
Le buffer paramètre est null.
Le offset paramètre est inférieur à 0.
- ou -
Le offset paramètre est supérieur à la buffer longueur du paramater.
- ou -
La size valeur est inférieure à 0.
- ou -
La size longueur est supérieure à la longueur de buffer moins la valeur du offset paramètre.
Le sous-jacent Socket est fermé.
- ou -
Une défaillance s’est produite lors de la lecture à partir du réseau.
- ou -
Une erreur s’est produite lors de l’accès au socket.
La NetworkStream fermeture est terminée.
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 des tâches.
Vous pouvez passer un rappel qui s’implémente AsyncCallbackBeginRead pour être informé de l’achèvement de l’opération. Notez que si la pile réseau sous-jacente termine l’opération de façon synchrone, le rappel est exécuté en ligne, pendant l’appel à BeginRead. Dans ce cas, la CompletedSynchronously propriété sur le retour IAsyncResult sera définie pour true indiquer que la méthode s’est terminée de façon synchrone. Utilisez la AsyncState propriété de l’objet IAsyncResult d’état passé à la BeginRead méthode.
L’opération BeginRead doit être effectué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 count paramètre.
Note
Si vous recevez un IOException, vérifiez la InnerException propriété pour déterminer si elle a été provoquée par un SocketException. Dans ce 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 une 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.