Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Méthode

Définition

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

IAsyncResult

É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 le .NET Framework 4,5 pour prendre en charge le code hérité. toutefois, les nouvelles méthodes async, telles que ReadAsync ,, WriteAsync CopyToAsync et FlushAsync , vous aident à implémenter les opérations d’e/s asynchrones plus facilement.

L’implémentation par défaut de BeginWrite sur un flux appelle la Write méthode de façon synchrone, ce qui signifie que Write peut se bloquer sur certains flux. Toutefois, les instances de classes telles que FileStream et NetworkStream prennent 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 sont pas bloqués sur ces flux. Vous pouvez substituer BeginWrite (à l’aide de délégués Async, par exemple) pour fournir un comportement asynchrone.

Transmettez le IAsyncResult retourné par la méthode actuelle à EndWrite pour 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, vous pouvez utiliser le même code que celui qui BeginWrite a appelé ou dans un rappel passé à BeginWrite . Si une erreur se produit pendant une écriture asynchrone, une exception n’est pas levée tant que EndWrite la méthode n’est pas appelée avec le IAsyncResult retourné par cette méthode.

Si un flux est accessible en écriture, l’écriture à la fin du flux étend le flux.

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 des demandes incertain.

Utilisez la CanWrite propriété pour déterminer si l’instance actuelle prend en charge l’écriture.

Si un flux est fermé ou si vous transmettez un argument non valide, les exceptions sont levées immédiatement à partir de BeginWrite . Les erreurs qui se produisent pendant une requête d’écriture asynchrone, telles qu’une défaillance du disque pendant la requête d’e/s, se produisent sur le thread du pool de threads et lèvent des exceptions lors de l’appel de EndWrite .

S’applique à

Voir aussi