Udostępnij przez


LogRecordSequence.Append Metoda

Definicja

Zapisuje rekord dziennika w obiekcie IRecordSequence.

Przeciążenia

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

Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.

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

Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.

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

Zapisuje rekord dziennika w obiekcie LogRecordSequence. Nie można dziedziczyć tej metody.

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

Dołącza rekord dziennika do elementu IRecordSequence. Nie można dziedziczyć tej metody.

Przykłady

W tym przykładzie pokazano, jak używać Append elementu członkowskiego

    // 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)

Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.

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

Parametry

data
ArraySegment<Byte>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

nextUndoRecord
SequenceNumber

Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.

reservations
ReservationCollection

Element ReservationCollection zawierający rezerwację, która powinna być używana dla tego rekordu.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

userRecord lub previousRecord jest nieprawidłowy dla tej sekwencji.

-lub-

data nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.

-lub-

reservations ta sekwencja rekordów nie została utworzona.

Co najmniej jeden argument to null.

userRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.

-lub-

Nie można wykonać żądania z powodu błędu urządzenia we/wy.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Metoda została wywołana po usunięciu sekwencji.

Za mało pamięci, aby kontynuować wykonywanie programu.

Sekwencja rekordów jest pełna.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić się data w pliku reservations.

Uwagi

Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Dołączony rekord będzie zużywać miejsce, które zostało wcześniej zarezerwowane, przy użyciu rezerwacji określonej przez reservations parametr . Jeśli dołączanie zakończy się pomyślnie, będzie korzystać z najmniejszego obszaru rezerwacji, który może przechowywać dane, a obszar rezerwacji zostanie usunięty z kolekcji.

Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy

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

Dołącza rekord dziennika do IRecordSequenceelementu , używając wcześniej zarezerwowanego miejsca w sekwencji. Nie można dziedziczyć tej metody.

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

Parametry

data
IList<ArraySegment<Byte>>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

userRecord
SequenceNumber

Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.

reservations
ReservationCollection

Element ReservationCollection zawierający rezerwację, która powinna być używana dla tego rekordu.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

userRecord lub previousRecord jest nieprawidłowy dla tej sekwencji.

-lub-

data nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.

-lub-

reservations ta sekwencja rekordów nie została utworzona.

Co najmniej jeden argument to null.

userRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.

-lub-

Nie można wykonać żądania z powodu błędu urządzenia we/wy.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Metoda została wywołana po usunięciu sekwencji.

Za mało pamięci, aby kontynuować wykonywanie programu.

Sekwencja rekordów jest pełna.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić się data w pliku reservations.

Uwagi

Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Dołączony rekord będzie zużywać miejsce, które zostało wcześniej zarezerwowane, przy użyciu rezerwacji określonej przez reservations parametr . Jeśli dołączanie zakończy się pomyślnie, będzie korzystać z najmniejszego obszaru rezerwacji, który może przechowywać dane, a obszar rezerwacji zostanie usunięty z kolekcji.

Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy

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

Zapisuje rekord dziennika w obiekcie LogRecordSequence. Nie można dziedziczyć tej metody.

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

Parametry

data
ArraySegment<Byte>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

nextUndoRecord
SequenceNumber

Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

userRecord lub previousRecord jest nieprawidłowy dla tej sekwencji.

-lub-

data nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.

-lub-

reservations ta sekwencja rekordów nie została utworzona.

Co najmniej jeden argument to null.

userRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.

-lub-

Nie można wykonać żądania z powodu błędu urządzenia we/wy.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Metoda została wywołana po usunięciu sekwencji.

Za mało pamięci, aby kontynuować wykonywanie programu.

Sekwencja rekordów jest pełna.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Przykłady

W poniższym przykładzie pokazano, jak używać tej metody do dołączania rekordu dziennika do sekwencji.

// 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)

Uwagi

Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy

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

Dołącza rekord dziennika do elementu IRecordSequence. Nie można dziedziczyć tej metody.

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

Parametry

data
IList<ArraySegment<Byte>>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

userRecord
SequenceNumber

Numer sekwencji następnego rekordu w podanej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określająca RecordAppendOptions sposób zapisywania danych.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

userRecord lub previousRecord jest nieprawidłowy dla tej sekwencji.

-lub-

data nie można dołączyć, ponieważ jest on większy niż maksymalny rozmiar rekordu.

-lub-

reservations ta sekwencja rekordów nie została utworzona.

Co najmniej jeden argument to null.

userRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.

-lub-

Nie można wykonać żądania z powodu błędu urządzenia we/wy.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Metoda została wywołana po usunięciu sekwencji.

Za mało pamięci, aby kontynuować wykonywanie programu.

Sekwencja rekordów jest pełna.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Uwagi

Dane zawarte w parametrze data będą łączone w jedną tablicę bajtów do dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Zwykle ta metoda kończy się przed zapisem rekordu. Aby upewnić się, że rekord został zapisany, określ ForceFlush flagę przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy