LogRecordSequence.Append Metod

Definition

Skriver en loggpost till IRecordSequence.

Överlagringar

Name Description
Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Lägger till en loggpost i IRecordSequence, med utrymme som tidigare reserverats i sekvensen. Den här metoden kan inte ärvas.

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Lägger till en loggpost i IRecordSequence, med utrymme som tidigare reserverats i sekvensen. Den här metoden kan inte ärvas.

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Skriver en loggpost till LogRecordSequence. Den här metoden kan inte ärvas.

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Lägger till en loggpost i IRecordSequence. Den här metoden kan inte ärvas.

Exempel

Det här exemplet visar hur du Append använder medlemmen

    // Append records. Appending three records.
    public void AppendRecords()
    {
        Console.WriteLine("Appending Log Records...");
        SequenceNumber previous = SequenceNumber.Invalid;

        previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);
        previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);

        Console.WriteLine("Done...");
    }
' Append records. Appending three records.  
Public Sub AppendRecords()
    Console.WriteLine("Appending Log Records...")
    Dim previous As SequenceNumber = SequenceNumber.Invalid

    previous = sequence.Append(CreateData("Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
    previous = sequence.Append(CreateData("This is my first Logging App"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
    previous = sequence.Append(CreateData("Using LogRecordSequence..."), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)

    Console.WriteLine("Done...")
End Sub

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Lägger till en loggpost i IRecordSequence, med utrymme som tidigare reserverats i sekvensen. Den här metoden kan inte ärvas.

public:
 virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservations);
public System.IO.Log.SequenceNumber Append(ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservations);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber

Parametrar

data
ArraySegment<Byte>

En lista över bytematrissegment som sammanfogas och läggs till som post.

nextUndoRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

reservations
ReservationCollection

En ReservationCollection som innehåller reservationen som ska användas för den här posten.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

userRecord eller previousRecord är inte giltig för den här sekvensen.

-eller-

data kan inte läggas till eftersom den är större än den maximala poststorleken.

-eller-

reservations skapades inte av den här postsekvensen.

Ett eller flera av argumenten är null.

userRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.

-eller-

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Metoden anropades efter att sekvensen har tagits bort.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Postsekvensen är full.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Det finns ingen reservation som är tillräckligt stor för att passa data i reservations.

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

Den bifogade posten förbrukar utrymme som tidigare har reserverats med hjälp av en reservation som anges av parametern reservations . Om tillägget lyckas kommer det att förbruka det minsta reservationsområdet som kan innehålla data, och det reservationsområdet tas bort från samlingen.

Normalt slutförs den här metoden innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

Lägger till en loggpost i IRecordSequence, med utrymme som tidigare reserverats i sekvensen. Den här metoden kan inte ärvas.

public:
 virtual System::IO::Log::SequenceNumber Append(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 ^ reservations);
public System.IO.Log.SequenceNumber Append(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 reservations);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservations As ReservationCollection) As SequenceNumber

Parametrar

data
IList<ArraySegment<Byte>>

En lista över bytematrissegment som sammanfogas och läggs till som post.

userRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

reservations
ReservationCollection

En ReservationCollection som innehåller reservationen som ska användas för den här posten.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

userRecord eller previousRecord är inte giltig för den här sekvensen.

-eller-

data kan inte läggas till eftersom den är större än den maximala poststorleken.

-eller-

reservations skapades inte av den här postsekvensen.

Ett eller flera av argumenten är null.

userRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.

-eller-

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Metoden anropades efter att sekvensen har tagits bort.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Postsekvensen är full.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Det finns ingen reservation som är tillräckligt stor för att passa data i reservations.

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

Den bifogade posten förbrukar utrymme som tidigare har reserverats med hjälp av en reservation som anges av parametern reservations . Om tillägget lyckas kommer det att förbruka det minsta reservationsområdet som kan innehålla data, och det reservationsområdet tas bort från samlingen.

Normalt slutförs den här metoden innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Skriver en loggpost till LogRecordSequence. Den här metoden kan inte ärvas.

public:
 virtual System::IO::Log::SequenceNumber Append(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append(ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber

Parametrar

data
ArraySegment<Byte>

En lista över bytematrissegment som sammanfogas och läggs till som post.

nextUndoRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

userRecord eller previousRecord är inte giltig för den här sekvensen.

-eller-

data kan inte läggas till eftersom den är större än den maximala poststorleken.

-eller-

reservations skapades inte av den här postsekvensen.

Ett eller flera av argumenten är null.

userRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.

-eller-

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Metoden anropades efter att sekvensen har tagits bort.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Postsekvensen är full.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Exempel

I följande exempel visas hur du använder den här metoden för att lägga till en loggpost i sekvensen.

// Start Appending in two streams with interleaving appends.

        SequenceNumber previous1 = SequenceNumber.Invalid;
        SequenceNumber previous2 = SequenceNumber.Invalid;

        Console.WriteLine("Appending interleaving records in stream1 and stream2...");
        Console.WriteLine();
// Append two records in stream1.
        previous1 = sequence1.Append(
            CreateData("MyLogStream1: Hello World!"),
            SequenceNumber.Invalid,
            SequenceNumber.Invalid,
            RecordAppendOptions.ForceFlush);
        previous1 = sequence1.Append(
            CreateData("MyLogStream1: This is my first Logging App"),
            previous1,
            previous1,
            RecordAppendOptions.ForceFlush);

// Append two records in stream2.
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: Hello World!"),
            SequenceNumber.Invalid,
            SequenceNumber.Invalid,
            RecordAppendOptions.ForceFlush);
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: This is my first Logging App"),
            previous2,
            previous2,
            RecordAppendOptions.ForceFlush);

// Append the third record in stream1.
        previous1 = sequence1.Append(CreateData(
            "MyLogStream1: Using LogRecordSequence..."),
            previous1,
            previous1,
            RecordAppendOptions.ForceFlush);
        
// Append the third record in stream2.
        previous2 = sequence2.Append(
            CreateData("MyLogStream2: Using LogRecordSequence..."),
            previous2,
            previous2,
            RecordAppendOptions.ForceFlush);
' Start Appending in two streams with interleaving appends.

        Dim previous1 As SequenceNumber = SequenceNumber.Invalid
        Dim previous2 As SequenceNumber = SequenceNumber.Invalid

        Console.WriteLine("Appending interleaving records in stream1 and stream2...")
        Console.WriteLine()
' Append two records in stream1.
        previous1 = sequence1.Append(CreateData("MyLogStream1: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous1 = sequence1.Append(CreateData("MyLogStream1: This is my first Logging App"), previous1, previous1, RecordAppendOptions.ForceFlush)

' Append two records in stream2.
        previous2 = sequence2.Append(CreateData("MyLogStream2: Hello World!"), SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush)
        previous2 = sequence2.Append(CreateData("MyLogStream2: This is my first Logging App"), previous2, previous2, RecordAppendOptions.ForceFlush)

' Append the third record in stream1.
        previous1 = sequence1.Append(CreateData("MyLogStream1: Using LogRecordSequence..."), previous1, previous1, RecordAppendOptions.ForceFlush)

' Append the third record in stream2.
        previous2 = sequence2.Append(CreateData("MyLogStream2: Using LogRecordSequence..."), previous2, previous2, RecordAppendOptions.ForceFlush)

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

Normalt slutförs den här metoden innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)

Lägger till en loggpost i IRecordSequence. Den här metoden kan inte ärvas.

public:
 virtual System::IO::Log::SequenceNumber Append(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions);
public System.IO.Log.SequenceNumber Append(System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions);
abstract member Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
override this.Append : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions -> System.IO.Log.SequenceNumber
Public Function Append (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions) As SequenceNumber

Parametrar

data
IList<ArraySegment<Byte>>

En lista över bytematrissegment som sammanfogas och läggs till som post.

userRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

userRecord eller previousRecord är inte giltig för den här sekvensen.

-eller-

data kan inte läggas till eftersom den är större än den maximala poststorleken.

-eller-

reservations skapades inte av den här postsekvensen.

Ett eller flera av argumenten är null.

userRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.

-eller-

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Metoden anropades efter att sekvensen har tagits bort.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Postsekvensen är full.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

Normalt slutförs den här metoden innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för