LogRecordSequence.ReserveAndAppend 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.
Effectue automatiquement une réservation unique et ajoute un enregistrement à la séquence.
Surcharges
| Nom | Description |
|---|---|
| ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Effectue automatiquement une réservation unique et ajoute un enregistrement à la séquence. Cette méthode ne peut pas être héritée. |
| ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Effectue automatiquement une réservation unique et ajoute un enregistrement à la séquence. Cette méthode ne peut pas être héritée. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Effectue automatiquement une réservation unique et ajoute un enregistrement à la séquence. Cette méthode ne peut pas être héritée.
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(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);
public System.IO.Log.SequenceNumber ReserveAndAppend(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, params long[] reservations);
abstract member ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
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
Valeur valide de RecordAppendOptions ce qui spécifie la façon dont les données doivent être écrites.
- reservationCollection
- ReservationCollection
Collection de réservations dans laquelle effectuer des réservations.
- reservations
- Int64[]
Réservations à effectuer, en octets.
Retours
Numéro de séquence de l’enregistrement de journal ajouté.
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’enregistrements n’a pas pu libérer suffisamment d’espace pour contenir le nouvel enregistrement ou pour effectuer la réservation.
La méthode a été appelée après la suppression de la séquence.
Un ou plusieurs arguments sont null.
userRecord ou previousRecord n’est pas compris entre les nombres de base et de dernière séquence de cette séquence.
Impossible d’effectuer l’opération, car la séquence d’enregistrements a été ouverte avec un accès en lecture seule.
Il n’y a pas assez de mémoire pour poursuivre l’exécution du programme.
L’accès pour la séquence de journaux spécifiée est refusé par le système d’exploitation.
Aucune réservation suffisamment grande pour s’adapter data peut être trouvée dans reservations.
Remarques
Les données contenues dans le data paramètre sont concaténées dans un tableau d’octets unique pour l’ajout en tant qu’enregistrement. Toutefois, aucune disposition n’est effectuée pour fractionner les données en segments de tableau lorsque l’enregistrement est lu.
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 peut se terminer avant l’écriture de l’enregistrement. Pour vous assurer qu’un enregistrement a été écrit, spécifiez l’indicateur ForceFlush à l’aide du recordAppendOptions paramètre ou appelez la Flush méthode.
S’applique à
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Effectue automatiquement une réservation unique et ajoute un enregistrement à la séquence. Cette méthode ne peut pas être héritée.
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(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);
public System.IO.Log.SequenceNumber ReserveAndAppend(ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
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
Valeur valide de RecordAppendOptions ce qui spécifie la façon dont les données doivent être écrites.
- reservationCollection
- ReservationCollection
Qui ReservationCollection contient la collection dans laquelle effectuer des réservations.
- reservations
- Int64[]
Réservations à effectuer, en octets.
Retours
Numéro de séquence de l’enregistrement de journal ajouté.
Implémente
Exceptions
nextUndoRecord ou previousRecord n’est pas valide pour cette séquence.
- ou -
data ne peut pas être ajouté, car il est supérieur à la taille maximale de l’enregistrement.
- ou -
reservations n’a pas été créé par cette séquence d’enregistrements.
Un ou plusieurs arguments sont null.
nextUndoRecord ou previousRecord n’est pas compris entre les nombres de base et de dernière séquence de cette séquence.
Impossible d’effectuer la requête en raison d’une exception d’E/S inattendue.
- ou -
Impossible d’effectuer la requête en raison d’une erreur d’appareil d’E/S.
Impossible d’effectuer l’opération, car la séquence d’enregistrements a été ouverte avec un accès en lecture seule.
La méthode a été appelée après la suppression de la séquence.
Il n’y a pas assez de mémoire pour poursuivre l’exécution du programme.
La séquence d’enregistrements est pleine.
L’accès pour la séquence de journaux spécifiée est refusé par le système d’exploitation.
Aucune réservation suffisamment grande pour s’adapter data peut être trouvée dans reservations.
Exemples
L’exemple suivant montre comment utiliser cette méthode pour effectuer des réservations. Notez que cette tâche ne peut être effectuée que lors de l’utilisation de la classe CLFS LogRecordSequence .
ReservationCollection reservations = recordSequence.CreateReservationCollection();
long[] lengthOfUndoRecords = new long[] { 1000 };
recordSequence.ReserveAndAppend(recordData,
userSqn,
previousSqn,
RecordSequenceAppendOptions.None,
reservations,
lengthOfUndoRecords);
recordSequence.Append(undoRecordData, // If necessary …
userSqn,
previousSqn,
RecordSequenceAppendOptions.ForceFlush,
reservations);
Remarques
Les données contenues dans le data paramètre sont concaténées dans un tableau d’octets unique pour l’ajout en tant qu’enregistrement. Toutefois, aucune disposition n’est effectuée pour fractionner les données en segments de tableau lorsque l’enregistrement est lu.
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 peut se terminer avant l’écriture de l’enregistrement. Pour vous assurer qu’un enregistrement a été écrit, spécifiez l’indicateur ForceFlush à l’aide du recordAppendOptions paramètre ou appelez la Flush méthode.