LogRecordSequence.ReserveAndAppend Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Maakt automatisch één reservering en voegt een record toe aan de reeks.
Overloads
| Name | Description |
|---|---|
| ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Maakt automatisch één reservering en voegt een record toe aan de reeks. Deze methode kan niet worden overgenomen. |
| ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Maakt automatisch één reservering en voegt een record toe aan de reeks. Deze methode kan niet worden overgenomen. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Maakt automatisch één reservering en voegt een record toe aan de reeks. Deze methode kan niet worden overgenomen.
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
Parameters
- data
- IList<ArraySegment<Byte>>
Een lijst met bytematrixsegmenten die als record worden samengevoegd en toegevoegd.
- userRecord
- SequenceNumber
Het volgnummer van de volgende record in de door de gebruiker opgegeven volgorde.
- previousRecord
- SequenceNumber
Het volgnummer van de volgende record in vorige volgorde.
- recordAppendOptions
- RecordAppendOptions
Een geldige waarde hiervan RecordAppendOptions geeft aan hoe de gegevens moeten worden geschreven.
- reservationCollection
- ReservationCollection
De reserveringsverzameling waarin u reserveringen wilt maken.
- reservations
- Int64[]
De reserveringen die moeten worden gemaakt, in bytes.
Retouren
Het volgnummer van de toegevoegde logboekrecord.
Implementeringen
Uitzonderingen
Een of meer argumenten zijn ongeldig.
Er is een I/O-fout opgetreden tijdens het toevoegen van de record.
De recordreeks kan onvoldoende vrije ruimte maken om de nieuwe record te bevatten of om de reservering te maken.
De methode is aangeroepen nadat de reeks is verwijderd.
Een of meer van de argumenten zijn null.
userRecord of previousRecord zich niet tussen de basis- en laatste reeksnummers van deze reeks bevindt.
De bewerking kan niet worden uitgevoerd omdat de recordreeks is geopend met alleen-lezentoegang.
Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.
De toegang voor de opgegeven logboekreeks wordt geweigerd door het besturingssysteem.
Er is geen reservering groot genoeg om in te passendata.reservations
Opmerkingen
Gegevens in de data parameter worden samengevoegd in één bytematrix voor het toevoegen als record. Er wordt echter geen inrichting gemaakt voor het terugsplitsen van gegevens in matrixsegmenten wanneer de record wordt gelezen.
De opgegeven reserveringen worden toegevoegd aan de opgegeven reserveringsverzameling in een atomische bewerking met een bewerking voor het toevoegen van records. Als de toevoeg mislukt, is er geen ruimte gereserveerd.
Normaal gesproken kan deze methode worden voltooid voordat de record is geschreven. Als u ervoor wilt zorgen dat een record is geschreven, geeft u de ForceFlush vlag op met behulp van de recordAppendOptions parameter of roept u de methode aan Flush .
Van toepassing op
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Maakt automatisch één reservering en voegt een record toe aan de reeks. Deze methode kan niet worden overgenomen.
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
Parameters
- data
- ArraySegment<Byte>
Een lijst met bytematrixsegmenten die als record worden samengevoegd en toegevoegd.
- nextUndoRecord
- SequenceNumber
Het volgnummer van de volgende record in de door de gebruiker opgegeven volgorde.
- previousRecord
- SequenceNumber
Het volgnummer van de volgende record in vorige volgorde.
- recordAppendOptions
- RecordAppendOptions
Een geldige waarde hiervan RecordAppendOptions geeft aan hoe de gegevens moeten worden geschreven.
- reservationCollection
- ReservationCollection
Een ReservationCollection die de verzameling bevat waarin u reserveringen kunt maken.
- reservations
- Int64[]
De reserveringen die moeten worden gemaakt, in bytes.
Retouren
Het volgnummer van de toegevoegde logboekrecord.
Implementeringen
Uitzonderingen
nextUndoRecord of previousRecord is niet geldig voor deze reeks.
– of –
data kan niet worden toegevoegd omdat deze groter is dan de maximale recordgrootte.
– of –
reservations is niet gemaakt door deze recordreeks.
Een of meer van de argumenten zijn null.
nextUndoRecord of previousRecord zich niet tussen de basis- en laatste reeksnummers van deze reeks bevindt.
De aanvraag kan niet worden uitgevoerd vanwege een onverwachte I/O-uitzondering.
– of –
De aanvraag kan niet worden uitgevoerd vanwege een I/O-apparaatfout.
De bewerking kan niet worden uitgevoerd omdat de recordreeks is geopend met alleen-lezentoegang.
De methode is aangeroepen nadat de reeks is verwijderd.
Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.
De recordreeks is vol.
De toegang voor de opgegeven logboekreeks wordt geweigerd door het besturingssysteem.
Er is geen reservering groot genoeg om in te passendata.reservations
Voorbeelden
In het volgende voorbeeld ziet u hoe u deze methode gebruikt om reserveringen te maken. U ziet dat deze taak alleen kan worden uitgevoerd wanneer u de klasse CLFS LogRecordSequence gebruikt.
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);
Opmerkingen
Gegevens in de data parameter worden samengevoegd in één bytematrix voor het toevoegen als record. Er wordt echter geen inrichting gemaakt voor het terugsplitsen van gegevens in matrixsegmenten wanneer de record wordt gelezen.
De opgegeven reserveringen worden toegevoegd aan de opgegeven reserveringsverzameling in een atomische bewerking met een bewerking voor het toevoegen van records. Als de toevoeg mislukt, is er geen ruimte gereserveerd.
Normaal gesproken kan deze methode worden voltooid voordat de record is geschreven. Als u ervoor wilt zorgen dat een record is geschreven, geeft u de ForceFlush vlag op met behulp van de recordAppendOptions parameter of roept u de methode aan Flush .