Stream.BeginWrite(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ébute une opération d'écriture asynchrone. (Utilisez WriteAsync(Byte[], Int32, Int32) à la place.)
public:
virtual IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ callback, System::Object ^ state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback? callback, object? state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object state);
public virtual IAsyncResult BeginWrite (byte[] buffer, int offset, int count, AsyncCallback callback, object? state);
abstract member BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overridable Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, callback As AsyncCallback, state As Object) As IAsyncResult
Paramètres
- buffer
- Byte[]
Mémoire tampon dont sont issues les données à écrire.
- offset
- Int32
Dans buffer
, décalage d'octet à partir duquel l'écriture doit commencer.
- count
- Int32
Nombre maximal d'octets à écrire.
- callback
- AsyncCallback
Rappel asynchrone facultatif, à appeler quand l'écriture est terminée.
- state
- Object
Objet fourni par l'utilisateur qui distingue cette requête d'écriture asynchrone des autres requêtes.
Retours
Élément IAsyncResult
représentant l'écriture asynchrone, qui peut être encore en attente.
Exceptions
Tentative d’écriture asynchrone au-delà de la fin du flux, ou une erreur disque s’est produite.
Un ou plusieurs arguments ne sont pas valides.
Des méthodes ont été appelées après la fermeture du flux.
L’implémentation du Stream
en cours ne prend pas en charge l’opération d’écriture.
Remarques
Dans .NET Framework 4 et les versions antérieures, on doit utiliser des méthodes telles que BeginWrite et EndWrite pour implémenter les opérations d'E/S asynchrones. Ces méthodes sont toujours disponibles dans .NET Framework 4.5 pour prendre en charge le code hérité ; Toutefois, les nouvelles méthodes asynchrones, telles que ReadAsync, WriteAsync, CopyToAsyncet FlushAsync, vous aident à implémenter plus facilement des opérations d’E/S asynchrones.
L’implémentation par défaut de BeginWrite
sur un flux appelle la Write méthode de manière synchrone, ce qui signifie que Write
peut bloquer sur certains flux. Toutefois, les instances de classes telles que FileStream
et prennent NetworkStream
entièrement en charge les opérations asynchrones si les instances ont été ouvertes de manière asynchrone. Par conséquent, les appels à BeginWrite
ne se bloquent pas sur ces flux. Vous pouvez remplacer BeginWrite
(en utilisant des délégués asynchrones, par exemple) pour fournir un comportement asynchrone.
Passez le IAsyncResult
retourné par la méthode actuelle à pour EndWrite vous assurer que l’écriture se termine et libère les ressources de manière appropriée. EndWrite doit être appelé une fois pour chaque appel à BeginWrite. Pour ce faire, utilisez le même code que celui qui a appelé BeginWrite
ou dans un rappel passé à BeginWrite
. Si une erreur se produit lors d’une écriture asynchrone, une exception ne sera pas levée tant que n’est EndWrite
pas appelé avec le IAsyncResult
retourné par cette méthode.
Si un flux est accessible en écriture, l’écriture à la fin du flux le développe.
La position actuelle dans le flux est mise à jour lorsque vous émettez la lecture ou l’écriture asynchrone, et non lorsque l’opération d’E/S se termine. Plusieurs demandes asynchrones simultanées rendent l’ordre d’achèvement de la demande incertain.
Utilisez la CanWrite propriété pour déterminer si le instance actuel prend en charge l’écriture.
Si un flux est fermé ou si vous passez un argument non valide, des exceptions sont levées immédiatement à partir de BeginWrite
. Les erreurs qui se produisent lors d’une demande d’écriture asynchrone, telles qu’une défaillance de disque pendant la demande d’E/S, se produisent sur le thread du pool de threads et lèvent des exceptions lors de l’appel EndWrite
de .