LogRecordSequence.BeginReserveAndAppend 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 réserve asynchrone et ajoute l'opération.
Surcharges
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Commence une réserve asynchrone et ajoute l'opération. Cette méthode ne peut pas être héritée. |
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object) |
Commence une réserve asynchrone et ajoute l'opération. Cette méthode ne peut pas être héritée. |
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)
Commence une réserve asynchrone et ajoute l'opération. Cette méthode ne peut pas être héritée.
public:
virtual IAsyncResult ^ BeginReserveAndAppend(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, cli::array <long> ^ reservations, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReserveAndAppend (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, long[] reservations, AsyncCallback callback, object state);
abstract member BeginReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
override this.BeginReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, reservations As Long(), callback As AsyncCallback, state As Object) As IAsyncResult
Paramètres
- data
- ArraySegment<Byte>
Liste des segments de tableau d'octets qui seront concaténés et ajoutés en tant qu'enregistrement.
- nextUndoRecord
- SequenceNumber
Numéro de séquence de l'enregistrement suivant dans l'ordre spécifié par l'utilisateur.
- previousRecord
- SequenceNumber
Numéro de séquence de l'enregistrement suivant dans l'ordre précédent.
- recordAppendOptions
- RecordAppendOptions
Une valeur valide de RecordAppendOptions qui spécifie comment les données doivent être écrites.
- reservationCollection
- ReservationCollection
Collection de réservations dans laquelle les réservations sont effectuées.
- reservations
- Int64[]
Réservations à effectuer, en octets.
- callback
- AsyncCallback
Rappel asynchrone facultatif à appeler lorsque l'ajout est terminé.
- state
- Object
Objet fourni par l'utilisateur qui distingue cette requête d'ajout asynchrone spécifique des autres requêtes.
Retours
IAsyncResult qui représente l'opération asynchrone qui pourrait être toujours en attente.
Implémente
Exceptions
userRecord
ou previousRecord
n'est pas valide pour cette séquence.
- ou -
data
ne peut pas être ajouté car il est supérieur à la taille d'enregistrement maximale.
- ou -
reservations
n'a pas été créé par cette séquence d'enregistrement.
Un ou plusieurs arguments ont la valeur null
.
userRecord
ou previousRecord
n'est pas compris entre le numéro de base et les derniers numéros de cette séquence.
La requête n'a pas pu être exécutée en raison d'une exception d'E/S inattendue.
- ou -
La requête n'a pas pu être exécutée en raison d'une erreur de périphérique d'E/S.
L'opération ne peut pas être effectuée car la séquence d'enregistrement a été ouverte en lecture seule.
La méthode a été appelée après la suppression de la séquence.
La mémoire disponible n'est pas suffisante pour continuer l'exécution du programme.
La séquence d'enregistrement est complète.
L'accès à la séquence de journal spécifiée est refusé par le système d'exploitation.
Aucune réservation assez grande pour data
ne se trouve dans reservations
.
Remarques
Vous devez passer le IAsyncResult retourné par cette méthode à la méthode EndReserveAndAppend pour vous assurer que l'opération d'ajout est terminée et que des ressources peuvent être libérées de façon appropriée. Si une erreur s'est produite pendant un ajout asynchrone, une exception n'est pas levée tant que la méthode EndReserveAndAppend n'est pas appelée avec le IAsyncResult retourné par cette méthode.
Les données contenues dans le paramètre data
seront concaténées dans un tableau d'octets unique pour l'ajouter en tant qu'enregistrement. Toutefois, il n'est pas possible de rétablir les segments du tableau en fractionnant les données lors de la lecture de l'enregistrement.
Les réservations spécifiées sont ajoutées à la collection de réservations fournie dans une opération atomique avec une opération d'ajout d'enregistrement. Si l'ajout échoue, aucun espace n'est réservé.
Normalement, cette méthode doit se terminer avant que l'enregistrement ait été écrit. Pour vous assurer de l'écriture d'un enregistrement, spécifiez l'indicateur ForceFlush à l'aide du paramètre recordAppendOptions
ou appelez la méthode Flush.
Si une séquence d’enregistrement a été supprimée ou si vous passez un argument non valide, les exceptions sont immédiatement levées dans cette opération. Lorsque des erreurs se sont produites pendant une requête d'ajout asynchrone, par exemple, une défaillance du disque pendant la requête d'E/S, les exceptions sont levées lorsque la méthode EndReserveAndAppend est appelée.
S’applique à
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)
Commence une réserve asynchrone et ajoute l'opération. Cette méthode ne peut pas être héritée.
public:
virtual IAsyncResult ^ BeginReserveAndAppend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, cli::array <long> ^ reservations, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReserveAndAppend (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, long[] reservations, AsyncCallback callback, object state);
abstract member BeginReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
override this.BeginReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, reservations As Long(), callback As AsyncCallback, state As Object) As IAsyncResult
Paramètres
- data
- IList<ArraySegment<Byte>>
Liste des segments de tableau d'octets qui seront concaténés et ajoutés en tant qu'enregistrement.
- userRecord
- SequenceNumber
Numéro de séquence de l'enregistrement suivant dans l'ordre spécifié par l'utilisateur.
- previousRecord
- SequenceNumber
Numéro de séquence de l'enregistrement suivant dans l'ordre précédent.
- recordAppendOptions
- RecordAppendOptions
Une valeur valide de RecordAppendOptions qui spécifie comment les données doivent être écrites.
- reservationCollection
- ReservationCollection
Collection de réservations dans laquelle les réservations sont effectuées.
- reservations
- Int64[]
Réservations à effectuer, en octets.
- callback
- AsyncCallback
Rappel asynchrone facultatif à appeler lorsque l'ajout est terminé.
- state
- Object
Objet fourni par l'utilisateur qui distingue cette requête d'ajout asynchrone spécifique des autres requêtes.
Retours
IAsyncResult qui représente l'opération asynchrone qui pourrait être toujours en attente.
Implémente
Exceptions
Un ou plusieurs arguments ne sont pas valides.
Une erreur d'E/S s'est produite lors de l'ajout de l'enregistrement.
La séquence d'enregistrement n'a pas réussi à libérer suffisamment d'espace pour stocker le nouvel enregistrement ou effectuer la réservation.
La méthode a été appelée après la suppression de la séquence.
Remarques
Vous devez passer le IAsyncResult retourné par cette méthode à la méthode EndReserveAndAppend pour vous assurer que l'opération d'ajout est terminée et que des ressources peuvent être libérées de façon appropriée. Si une erreur s'est produite pendant un ajout asynchrone, une exception n'est pas levée tant que la méthode EndReserveAndAppend n'est pas appelée avec le IAsyncResult retourné par cette méthode.
Les données contenues dans le paramètre data
seront concaténées dans un tableau d'octets unique pour l'ajouter en tant qu'enregistrement. Toutefois, il n'est pas possible de rétablir les segments du tableau en fractionnant les données lors de la lecture de l'enregistrement.
Les réservations spécifiées sont ajoutées à la collection de réservations fournie dans une opération atomique avec une opération d'ajout d'enregistrement. Si l'ajout échoue, aucun espace n'est réservé.
Normalement, cette méthode doit se terminer avant que l'enregistrement ait été écrit. Pour vous assurer de l'écriture d'un enregistrement, spécifiez l'indicateur ForceFlush à l'aide du paramètre recordAppendOptions
ou appelez la méthode Flush.
Si une séquence d’enregistrement a été supprimée ou si vous passez un argument non valide, les exceptions sont immédiatement levées dans cette opération. Lorsque des erreurs se sont produites pendant une requête d'ajout asynchrone, par exemple, une défaillance du disque pendant la requête d'E/S, les exceptions sont levées lorsque la méthode EndReserveAndAppend est appelée.